由于作者向 StackOverflow 寻求帮助请求,因此在此处抛出此问题。
有一个正在运行的现有应用程序,最初写入 SQL Server。可悲的是,现在有一个非常古老的 Access 数据库,我必须与之交谈。尝试使用 JetEntityFramework 来帮助我,这样我就不需要进行批发替换。走出大门,我抛出了这个异常。我怀疑 web.config 存在问题,因为正确设置的文档很少。
错误
System.InvalidOperationException 未由用户代码处理
HResult=-2146233079 消息=实体框架提供程序类型“JetEntityFrameworkProvider.JetProviderFactory, JetEntityFrameworkProvider, Version=1.2.4.0, Culture=neutral, PublicKeyToken=756cf6beb8fe7b41”的“实例”成员没有返回从“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>