EF コア キャッシュを構成する
このセクションでは、 NCache Entity Framework アプリケーションの拡張メソッドを使用して、EF Core Cache を作成します。これには、エンティティをシリアル化して指定する必要があります。 NCache- 固有の構成 DbContext
あなたのEFアプリケーションの。
Note
この機能は以下でも利用できます NCache Professional.
NCache また、アイテムが期限切れまたは削除により無効になった場合に、ユーザーがキャッシュを同期できる柔軟性も提供します。これにより、キャッシュ内のデータが最新の状態に保たれ、期限切れのアイテムを取得するためのデータベースへのネットワーク トリップが削減されます。
EFCore キャッシュ内のエンティティのシリアル化
EF Core Cache を構成する前に、データベース モデル内のすべてのエンティティをシリアル化して格納する必要があります。 NCacheしたがって、シリアル化可能としてマークする必要があります。
[Serializable]
public partial class Customers
{
// Getters setters
}
DbContextでのキャッシュ構成の指定
EF コア キャッシュを構成するには、 NCache で指定された構成可能なキャッシュ プロパティを提供します。 DbContext
を選択します。 NCacheConfiguration
このクラスを使用すると、ユーザーはプロパティを指定し、アプリケーションのロガーを構成できます。
重要
設定する必要があります NCache セクションに DbContext
またはアプリケーションのエントリポイントとして使用します。それ以外の場合は、次のことを示す例外がスローされます。 NCache 初期化構成は提供されていません。
- 次のコードサンプルは、 NCache 拡張された EF アプリケーションの場合
DbContext
とのクラスSqlServer
,DependencyType
,CacheConnectionOptions
キャッシュのクラスター ポート、再試行間隔、および接続の再試行回数を指定します。 構成CacheId
およびConnString
に指定されています アプリの構成 ファイル:
public partial class NorthwindContext : DbContext
{
...
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
// Parameters specified in App.config
string cacheId = ConfigurationManager.AppSettings["CacheId"];
string connString = ConfigurationManager.AppSettings["ConnString"];
bool errorEnabled = ConfigurationManager.AppSettings["ErrorEnabled"];
int bulkInsertChunkSize = ConfigurationManager.AppSettings["BulkInsertChunkSize"];
// Configure cache with connection retries and security
var options = new CacheConnectionOptions();
options.RetryInterval = 3;
options.ConnectionRetries = 2;
options.Port = 7801;
// Configure cache with security
options.UserCredentials.UserID = "john_smith";
options.UserCredentials.Password = "12345";
NCacheConfiguration.Configure(cacheId, DependencyType.SQLServer, errorEnabled, bulkInsertChunkSize, options);
optionsBuilder.UseSqlServer(connString);
}
}
SQL依存関係のデフォルトのスキーマ構成
データベース依存関係クエリは、通常の SQL クエリとは少し異なります。 したがって、SQL Server はこれらのクエリを有効なものとして受け入れません。 この問題を回避するには、 dbo
デフォルトのスキーマが設定されているテーブル名の前に追加する必要があります。 dbo
。 これを行うには、次のコード行を OnModelCreating
メソッド DbContext
クラス:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.HasDefaultSchema("dbo"); // add this line for SQL dependency
// rest of the entity model code goes here
}
この生成されたクエリは、データベースの依存関係を構成するために使用できます。
設定オプション
によって提供される構成オプション NCacheConfiguration
には次の値があります:
メンバー | タイプ | 説明 |
---|---|---|
CacheId |
string |
Entity Framework アプリケーションでの提供に使用するキャッシュの名前を指定します。 キャッシュ名が指定されていない場合は、構成例外がスローされます。 |
DatabaseType |
DependencyType |
Entity Framework によって使用されているデータベースについてキャッシュに通知する列挙型。 値は次のとおりです。Other = 0SqlServer = 1Oracle = 2この列挙型は、データの無効化を扱います。 データベース内のデータが更新された場合、 NCache 影響を受けるエンティティに応じてキャッシュされたクエリを削除し、次のクエリでデータ ソースから新しいデータを提供できるようにして、古いデータの使用を防ぎます。 注意: Entity Framework Core は Oracle をサポートしていないため、避ける必要があります。 注意: の場合 DependencyType として設定され Other 、データベースの依存関係は作成されません。注意: の場合 DependencyType として設定され SqlServer データの無効化には SQL の依存関係が必要であるため、SQL サービス ブローカーが SQL サーバー上で有効になっている必要があります。 SQL の依存関係には、特別な構成変更も必要です。 DbContext . |
InitParams |
CacheConnectionOptions |
を含むクラス カスタマイズされたパラメータ ユーザー指定の構成でキャッシュを初期化します。 |
IsConfigured |
bool |
かどうかを指定します DbContext オーバーライドオプションが設定されているかどうか。 |
方法 | 説明 |
---|---|
Configure |
Entity Framework アプリケーションでの提供に使用されるキャッシュを構成します。これにより、ユーザー指定のプロパティに従ってキャッシュの構成が設定されます。キャッシュ ID、データベース依存関係の種類、およびキャッシュのオプションの初期化パラメータを受け取ります。 |
ConfigureLogger |
のインスタンスを構成します Microsoft.Extensions.Logging.ILogger 人生 Microsoft.Extensions.Logging.ILoggerFactory キャッシュプロバイダーからの操作の詳細をログに記録します。 |
IsLoggerEnabled |
ロガーが指定されたログ レベルで有効になっているかどうかを指定します。 |
errorEnabled |
ユーザーが例外をスローするかどうかを決定できるようにします。 FromCache および LoadIntoCache クエリ |
bulkInsertChunkSize |
これにより、エンティティの大部分が小さなチャンクに分割され、キャッシュがチャンクごとに更新されます。 デフォルトでは、 bulkInsertChunkSize 1000です。 |
も参照してください
。ネット: Alachisoft.NCache.EntityFrameworkCore および Alachisoft.NCache.ランタイム.キャッシュ 名前空間。