2

将 NCache 4.6 与 EF 6.1.3 一起使用,无法使其与 NCache API 一起使用。

它在内部使用查询策略efcaching.ncconf但仅使用api-level-caching.Cache()方法时有效,对缓存无效。

我采取的步骤:

增加Alachisoft.Integrations.EntityFramework.CachingProvider了对项目的引用。

添加拦截器:

<interceptors>
    <interceptor type="Alachisoft.NCache.Integrations.EntityFramework.Caching.EFCommandInterceptor, Alachisoft.Integrations.EntityFramework.CachingProvider" />
</interceptors>

将命名空间添加Alachisoft.NCache.Integrations.EntityFramework.Caching到文件。

最后,使用他们的EntityDataModel示例,例如,更改PrintCustomerList(customerQuery);PrintCustomerList(customerQuery.Cache());,但结果没有被缓存。

更新 1:

检查dumpcachekeys.exe,它实际上已经为我的查询创建了缓存,但它仍然进入数据库以获取结果。

更新 2:

尝试转储现金数据dumpcachedata.exe失败并出现以下错误:

Items in cache      : 3

Error: Failed to resolve assembly: EntityFrameworkDynamicProxies-EntityDataModel, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
System.Exception: Failed to resolve assembly: EntityFrameworkDynamicProxies-EntityDataModel, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null          
    at Alachisoft.NCache.Tools.DumpCacheData.DumpCacheData.MakeBackup(Cache cache, String path)
    at Alachisoft.NCache.Tools.DumpCacheData.DumpCacheData.Run(String[] args)

更新 3

禁用示例实体框架中的动态代理EntityDataModel,解决了抛出的错误dumpcachedata.exe,现在现金数据成功转储。但是仍然缓存的查询会导致数据库跳闸。

4

0 回答 0