由于作者要求提供帮助请求到Stackoverflow。
有一个正在进行的现有应用程序,最初写入SQL Server。可悲的是,现在有一个非常旧的访问数据库,必须与我交谈。尝试使用JetentityFramework帮助我,以便我不需要进行批发替代。在大门外,我抛出了这个例外。我怀疑Web.config的问题是正确设置此文件的文档很少。
错误
system.invalidoperationException通过用户代码
未经处理 hresult = -2146233079消息=该实体的'实例'成员 框架提供商类型 'JetEntityFrameWorkProvider.JetProviderFactory, JetentityFrameWorkProvider,版本= 1.2.4.0,culture =中性, publicKeyToken = 756cf6beb8fe7b41'没有返回一个对象 继承来自'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>
在您的示例中,提供商使用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>