C# EF缓存提供程序包装器不适用于EF 6.0.2

C# EF缓存提供程序包装器不适用于EF 6.0.2,c#,caching,ado.net,entity-framework-6,C#,Caching,Ado.net,Entity Framework 6,我正在使用EF6和EF提供者包装器的二级缓存,但它不起作用 我得到这个错误: 找不到具有固定名称“EFCachingProvider”的ADO.NET提供程序的实体框架提供程序。确保提供程序已在应用程序配置文件的“entityFramework”部分注册。有关更多信息,请参阅 查看上述链接后,我使用了配置文件注册,之后出现以下错误: 实体框架提供程序类型“EFCachingProvider.EFCachingProviderFactory,EFCachingProvider,Version=1.

我正在使用EF6和EF提供者包装器的二级缓存,但它不起作用

我得到这个错误:

找不到具有固定名称“EFCachingProvider”的ADO.NET提供程序的实体框架提供程序。确保提供程序已在应用程序配置文件的“entityFramework”部分注册。有关更多信息,请参阅

查看上述链接后,我使用了配置文件注册,之后出现以下错误:

实体框架提供程序类型“EFCachingProvider.EFCachingProviderFactory,EFCachingProvider,Version=1.0.0.0,Culture=neutral,PublicKeyToken=def642f226e0e59b”的“实例”成员未返回从“System.Data.Entity.Core.Common.DbProviderServices”继承的对象。实体框架提供程序必须从此类继承,“实例”成员必须返回提供程序的单实例。这可能是因为提供程序不支持EntityFramework 6或更高版本


由于EF6中的提供程序模型(以及一些其他功能)发生了更改,EF缓存提供程序无法与EF6+版本一起使用。我为EF 6.1创建了一个二级缓存-有关更多详细信息,请参阅。

@Pawel我目前正在进行的项目最初的开发人员选择先开发模型,而不是先编写代码:(.我正在尝试使用DbContext使用EF6.1进行二级缓存,我假设您的解决方案首先不能与模型一起工作?我已经研究过实现一个类来实现IDbCommandInterceptor,但事实证明这有点困难,因为我想要无限期地缓存某些实体,而其他实体则不然。您可能知道吗我是如何做到这一点的?我还没有尝试过,但我认为它实际上也应该适用于ModelFirst。在EF6中,model first也使用DbContext,我认为配置将适用,因为CodeFirst和非CodeFirst方法之间的主要区别是后者使用edmx,而前者构建edmx(或者更准确地说,是MSL以及CSDL和SSDL的内存表示形式)。