JetEntityFramework vs EF 6?



由于作者要求提供帮助请求到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>

相关内容

  • 没有找到相关文章

最新更新