JetEntityFramework与EF 6?

乔兹

由于作者请求帮助请求前往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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章