我有一个包含WCF,控制台和网站等多个项目的解决方案。我正在为所有这些使用实体框架和一个dbcontext。 我试图使用EFCache作为实体框架的二级缓存。问题是当我从其中一个项目中插入新记录时,其他人无法在更改后重新加载新添加的数据。 例如,我通过WCF服务将新记录添加到我的数据库中,当我尝试从网站加载数据时,新添加的数据不会加载,网站也有自己的efcache。
请帮帮我......
谢谢
答案 0 :(得分:0)
如果Dal组件在所有客户端UI共享的服务器上运行,那么您可能遇到类似的问题。
我在我的Dal项目中将建议的代码添加到我的DbConfiguration启动方法中,然后实现了我的一个特定的Dal方法来使用缓存。
//Add 2nd level cache support
var transactionHandler = new CacheTransactionHandler(new InMemoryCache());
AddInterceptor(transactionHandler);
var cachingPolicy = new CachingPolicy();
Loaded +=
(sender, args) => args.ReplaceService<DbProviderServices>(
(s, _) => new CachingProviderServices(s, transactionHandler,
cachingPolicy));
我正在维护最近查看的记录列表,并注意到我正在查看的记录没有被记住。调试它似乎运行EF查询但它没有获取所有记录。 SQL分析器中没有显示任何内容,因此我意识到它的缓存比我想要的要多得多。
无论如何,我从DbConfiguration中删除了上面的代码,并在Dals中使用了EFCache.InMemoryCache本地,我想要缓存支持。
希望有所帮助。