Joe*_*eHz 5 c# entity-framework jet-ef-provider
因为作者要求帮助请求转到StackOverflow,所以在这里抛出这个.
有一个正在进行的现有应用程序,最初写入SQL Server.可悲的是,现在有一个非常古老的Access数据库,我必须与之交谈.尝试使用JetEntityFramework帮助我,所以我不需要进行批发替换.走出大门,我抛出这个例外.我怀疑web.config有问题,因为正确设置它的文档很少.
错误
System.InvalidOperationException未由用户代码处理
HResult = -2146233079 Message =实体框架提供程序类型'JetEntityFrameworkProvider.JetProviderFactory,JetEntityFrameworkProvider,Version = 1.2.4.0,Culture = neutral,PublicKeyToken = 756cf6beb8fe7b41'的'Instance'成员未返回继承自'System.Data.Entity.Core.Common.DbProviderServices'的对象.实体框架提供程序必须从此类继承,并且"实例"成员必须返回提供程序的单例实例.这可能是因为提供者不支持实体框架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>
Run Code Online (Sandbox Code Playgroud)
在您的示例中,提供程序使用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>
Run Code Online (Sandbox Code Playgroud)