EFCache CachingProviderServices 缺少静态实例 属性

EFCache CachingProviderServices lacks static Instance property

我试图在 .NET 4.5 项目中使用 EFCache NuGet 包 (https://github.com/moozzyk/EFCache),运行 启动时出现此错误:

System.InvalidOperationException
HResult=0x80131509
Message=The Entity Framework provider type '
EFCache.CachingProviderServices, EFCache, Version=1.1.3.0, 
Culture=neutral, PublicKeyToken=46c4868af4307d2c' did not have a static 
property or field named 'Instance'. Entity Framework providers must 
declare a static property or field named 'Instance' that returns the 
singleton instance of the provider.

EFCache.CachingProviderServices 扩展 System.Data.Entity.Core.Common.DbProviderServices,它没有静态实例 属性。所以看起来这个 属性 不一定在所有情况下都存在。

查看 EFCache.CachingProviderServices 的代码,我没有看到任何让它拥有静态实例的明智方法 属性,因为它的目的是作为另一个 DBProviderServices 的包装器作为构造函数参数传递的实例。

任何使用 EFCache 的人 Entity Framework 对发生的事情有任何想法吗?

EFCache 版本为 1.1.3.0。我在使用 Entity Framework 6.1.0 和 6.2.0 时遇到了同样的问题。 Web.config 部分如下所示:

  <entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
  <provider invariantName="MySql.Data.MySqlClient" type="EFCache.CachingProviderServices, EFCache" />
  <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>

问题是由配置文件中的以下行引起的:

<provider invariantName="MySql.Data.MySqlClient" type="EFCache.CachingProviderServices, EFCache" />

它应该描述实际的数据库提供者,对于 MySQL 它通常看起来像这样:

<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.11.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />

一般来说,如链接页面所述,EFCache.CachingProviderServices 是一个 wrapping 提供商,因此它不应该(也不能)注册为常规数据库提供程序(要求他们提供异常中提到的静态 Instance property/field)。

相反,它必须通过自定义 DbConfiguration 或静态 EntityFrameworkCache.Initialize() 方法激活,如 How to use it 中所述。