두 번째 수준 엔터티 프레임워크 캐시
NCache Entity Framework 캐싱 공급자는 코드 변경 없이 애플리케이션에 통합될 수 있습니다. 구성 파일 수정 및 지정 NCache Entity Framework 캐싱 공급자는 두 번째 수준 캐시 공급자입니다.
두 번째 수준 Entity Framework 캐시에 대한 필수 구성 요소
에서 찾을 수 있는 샘플 Entity Framework 응용 프로그램 GitHub의.
Entity Framework 2010 및 3.5용 Microsoft Visual Studio 4.0 및 Entity Framework 2012 및 2013용 Microsoft Visual Studio 6.1-6.2.
데이터베이스 도구(MS SQL SERVER, ORACLE).
활성화하는 데 필요한 단계 NCache Entity Framework 응용 프로그램에서 Second Level Cache Provider는 다음과 같습니다.
참조 어셈블리
공급자를 활용하려면 먼저 NuGet 패키지 애플리케이션의 Entity Framework용. 그런 다음 네임스페이스를 포함합니다. Alachisoft.Integrations.EntityFramework.CachingProvider
시작하는.
Entity Framework 애플리케이션을 통합할 수 있는 두 가지 방법이 있습니다. NCache 캐싱 공급자. 하나는 애플리케이션 또는 웹 구성 수정 다른 하나는 프로그래밍 방법.
애플리케이션 또는 웹 구성 수정
앱 구성 or 웹.구성 Entity Framework 응용 프로그램에서 ADO.NET Entity Data Model을 추가할 때 생성되는 다음과 같은 변경이 필요합니다.
공급자 고정 이름 지정
공급자 불변 이름은 응용 프로그램 또는 웹 구성 파일의 연결 문자열에 지정되거나 초기화 시 연결을 지정하여 프로그래밍 방식으로 지정됩니다. EntityConnection
.
엔터티 프레임워크 3.5-4.0
<connectionStrings>
<add name="NorthwindEntities" connectionString="metadata=res://*/NorthwindCustomerModel.csdl |res://*/NorthwindCustomerModel.ssdl |res://*/NorthwindCustomerModel.msl; provider=Alachisoft.Integrations.EntityFramework.CachingProvider; provider connection string="
wrappedProvider=System.Data.SqlClient; Data Source=localhost;Initial Catalog=Northwind;user id= userid; password=password; MultipleActiveResultSets=True"" providerName="System.Data.EntityClient"/>
</connectionStrings>
초기화를 위해 제공자 팩토리 추가 NCache 엔터티 프레임워크 공급자. 고정 특성은 ConnectionString의 공급자 이름과 동일해야 합니다.
<DbProviderFactories>
<add name="EF Caching Data Provider" invariant="Alachisoft.Integrations.EntityFramework.CachingProvider" description="Caching Provider Wrapper" type="Alachisoft.NCache.Integrations.EntityFramework.EFCachingProviderFactory, Alachisoft.Integrations.EntityFramework.CachingProvider, Version=x.x.x.x,Culture=neutral, PublicKeyToken=cff5926ed6a53769"/>
</DbProviderFactories>
주의 사항
교체 버전=xxxx 실제와 NCache 설치한 버전입니다.
프로그래밍(대체 방법)
연결을 지정하는 또 다른 방법은 생성하는 동안 지정하는 것입니다. ObjectContext
or EntityConnection
. 아래 예에서는 프로그래밍 방식으로 연결 문자열을 생성하고 초기화하는 방법을 보여줍니다. EntityConnection
.
SqlConnectionStringBuilder sqlConnBuilder = new SqlConnectionStringBuilder();
sqlConnBuilder.DataSource = "localhost";
sqlConnBuilder.InitialCatalog = "EFTestDB";
sqlConnBuilder.IntegratedSecurity = true;
string conString = sqlConnBuilder.ToString();
EntityConnectionStringBuilder efConnBuilder = new EntityConnectionStringBuilder();
efConnBuilder.Provider = "EFCachingProvider";
efConnBuilder.ProviderConnectionString = @"wrappedProvider=System.Data.SqlClient;" + conString;
efConnBuilder.Metadata = "res:// /NorthwindCustomerModel.csdl|res:" + "// /NorthwindCustomerModel.ssdl|res:" +"// /NorthwindCustomerModel.msl;";
EntityConnection connection = new EntityConnection(efConnBuilder.ToString());
엔터티 프레임워크 6.1 및 6.2
덮어쓰기 invariantName
및 type
지정할 구성 NCache 아래와 같이 Entity Framework 공급자입니다. 에 인터셉터 추가 <provider>
애플리케이션(또는 웹) 구성 파일의 섹션:
<entityFramework>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
<interceptors>
<interceptor type="Alachisoft.NCache.Integrations.EntityFramework.Caching.EFCommandInterceptor, Alachisoft.Integrations.EntityFramework.CachingProvider"/>
</interceptors>
</entityFramework>
프로그래밍(대체 방법)
구성을 초기화하는 동안 공급자 변형을 지정할 수도 있습니다. 다음은 제공자 불변을 지정하는 방법을 보여주는 예입니다.
this.AddInterceptor(new EFCommandInterceptor());
이제 제공된 확장 프로그램을 사용하여 결과를 캐시할 수 있습니다. IQueryable
. 아래 단계를 따르십시오.
- 다음 네임스페이스를 지정합니다.
using Alachisoft.NCache.Integrations.EntityFramework.Caching;
- 전화
Cache
이제 IQueryable 인스턴스에서 메서드 오버로드가 발생합니다.
IQueryable<Course> courses;
//courses = <some query according to your requirement>
var courses = courses.Cache();
appSettings에 애플리케이션 ID 추가
다음 정보를 추가해야 합니다. <appSettings>
of 앱 구성
or 웹.구성.
주의 사항
이러한 설정은 Entity Framework 버전과 무관합니다.
<appSettings>
<add key="app-id" value="EFCachingDemo"/>
<add key="logging-level" value="Debug"/>
</appSettings>
app-id:
이것은 현재 애플리케이션의 고유 식별자가 됩니다. NCache Entity Framework 캐싱 공급자는 다음에서 필요한 구성을 읽습니다. efcaching.ncconf 제공된 ID를 기준으로 앱 구성 or 웹.구성 귀하의 응용 프로그램 파일.logging-level:
애플리케이션의 로깅 수준을 결정합니다. 공급자는 수준이 오류로 설정된 경우에만 예외 및 오류를 기록합니다. 레벨이 디버그이면 예외/오류 및 기타 세부 정보가 모두 기록됩니다. 수준이 꺼짐(기본값)으로 설정된 경우 아무 것도 기록되지 않습니다. 로그 파일이 생성되는 경로는 다음과 같습니다.%NCHOME%\log-files\EfCachingLogs
(Windows) 또는/opt/ncache/log-files/EfCachingLogs
(Linux) 공급자 관련 로그가 생성되는 경로는 다음과 같습니다.%NCHOME%\log-files\EfCachingLogs\EfCachingProviderLogs
(윈도우).
주의 사항
App-id
of efcaching.ncconf 애플리케이션과 동일해야 합니다(앱 구성) 오류를 방지합니다.
프로그래밍을 통한 대체 방법
연결 문자열을 지정하는 것 외에도 앱 구성 or 웹.구성, 생성하는 동안 연결을 지정할 수도 있습니다. ObjectContext
or EntityConnection
. 프로그래밍 방식으로 연결 문자열을 만드는 동안 래퍼 정보가 연결 문자열에 포함되어야 합니다. 연결 문자열을 만드는 방법은 다음과 같습니다. ObjectContext
or EntityConnection
초기화할 수 있습니다.
var sqlConnBuilder = new SqlConnectionStringBuilder();
sqlConnBuilder.DataSource = "localhost";
sqlConnBuilder.InitialCatalog = "EFTestDB";
sqlConnBuilder.IntegratedSecurity = true;
string conString = sqlConnBuilder.ToString();
var efConnBuilder = new EntityConnectionStringBuilder();
efConnBuilder.Provider = "EFCachingProvider";
efConnBuilder.ProviderConnectionString = @"wrappedProvider=System.Data.SqlClient;" + conString;
efConnBuilder.Metadata = "res:// /NorthwindCustomerModel.csdl|res:" + "// /NorthwindCustomerModel.ssdl|res:" +"// /NorthwindCustomerModel.msl;";
var connection = new EntityConnection(efConnBuilder.ToString());
주의 사항
위의 변경 사항을 효과적으로 적용하려면 응용 프로그램을 다시 빌드해야 합니다.
도 참조
Entity Framework 재동기화 공급자
Entity Framework 캐싱 구성 파일
최대 절전 모드
Entity Framework 코어 캐싱