Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EFCache CachingProviderServices缺少静态实例属性_C#_Entity Framework 6 - Fatal编程技术网

C# EFCache CachingProviderServices缺少静态实例属性

C# EFCache CachingProviderServices缺少静态实例属性,c#,entity-framework-6,C#,Entity Framework 6,我试图在.NET 4.5项目中使用EFCache NuGet程序包(),在启动时遇到以下错误: System.InvalidOperationException HResult=0x80131509 Message=The Entity Framework provider type ' EFCache.CachingProviderServices, EFCache, Version=1.1.3.0, Culture=neutral, PublicKeyToken=46c4868af4307

我试图在.NET 4.5项目中使用EFCache NuGet程序包(),在启动时遇到以下错误:

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使用实体框架的人对发生的事情有什么想法吗

EFCache版本为1.1.3.0。我在EntityFramework6.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="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.11.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />


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

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

它应该描述实际的db提供程序,对于MySQL,它通常如下所示:

  <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="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.11.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />

通常,如链接页面中所述,
EFCache.CachingProviderServices
是包装提供程序,因此它不应该(也不能)注册为常规数据库提供程序(这要求它们提供异常中提到的静态
实例
属性/字段)


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

谢谢,这是问题的关键部分。另一部分是,我在解析配置字符串时遇到了一个错误,关于“无效密钥”端口。这可以追溯到这样一个事实,即实现DbConfiguration的类还需要专门指向MySql组件。