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 中所述。
我试图在 .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 中所述。