由于作者请求帮助请求前往StackOverflow,因此将其扔在这里。
已有一个正在运行的应用程序,最初是写入SQL Server的。可悲的是,现在有一个非常老的Access数据库,我必须与之交谈。尝试使用JetEntityFramework来帮助我,所以我不需要进行大量替代。我抛出了这个异常。我怀疑web.config有问题,因为正确设置此文件的文档很少。
错误
用户代码未处理System.InvalidOperationException
HResult = -2146233079消息=实体框架提供程序类型'JetEntityFrameworkProvider.JetProviderFactory,JetEntityFrameworkProvider,Version = 1.2.4.0,Culture = neutral,PublicKeyToken = 756cf6beb8fe7b41的'Instance'成员未返回从'System.Data.Entity.Core.Common.DbProviderServices'继承的对象。实体框架提供程序必须从此类继承,并且“实例”成员必须返回提供程序的单例实例。这可能是因为提供程序不支持Entity Framework 6或更高版本。有关更多信息,请参见http://go.microsoft.com/fwlink/?LinkId=260882。
这是我的web.config的相关代码段(被要求更改DBContext和MDB文件的实际名称)
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="JetEntityFrameworkProvider" type="JetEntityFrameworkProvider.JetProviderFactory, JetEntityFrameworkProvider"/>
</providers>
</entityFramework>
<connectionStrings>
<add name="MyDBContext"
connectionString="Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\MyAccessDB.MDB"
providerName="JetEntityFrameworkProvider.JetConnection" />
</connectionStrings>
<system.data>
<DBProviderFactories>
<remove invariant="JetEntityFrameworkProvider"/>
<add invariant="JetEntityFrameworkProvider"
name="Jet Entity Framework Provider"
type="JetEntityFrameworkProvider.JetProviderFactory, JetEntityFrameworkProvider"/>
</DBProviderFactories>
</system.data>
在您的示例中,提供程序使用JetEntityFrameworkProvider.JetProviderFactory
其类型。这导致上述异常,因为它没有继承自System.Data.Entity.Core.Common.DbProviderServices
。从视频教程到检查源代码,JetEntityFrameworkProvider.JetProviderServices
都是提供程序所需的类型。
根据项目站点上的教程,检查以下示例配置。
<connectionStrings>
<add name="MyDBContext"
connectionString="Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\MyAccessDB.MDB"
providerName="JetEntityFrameworkProvider" />
</connectionStrings>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider
invariantName="JetEntityFrameworkProvider"
type="JetEntityFrameworkProvider.JetProviderServices, JetEntityFrameworkProvider"/>
</providers>
</entityFramework>
<system.data>
<DBProviderFactories>
<remove invariant="JetEntityFrameworkProvider"/>
<add
invariant="JetEntityFrameworkProvider"
name="Jet Entity Framework Provider"
description="Jet Entity Framework Provider"
type="JetEntityFrameworkProvider.JetProviderFactory, JetEntityFrameworkProvider"/>
</DBProviderFactories>
</system.data>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句