首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在.NET核心5中注册火鸟?

如何在.NET核心5中注册火鸟?
EN

Stack Overflow用户
提问于 2022-06-16 14:24:34
回答 1查看 154关注 0票数 1

我目前正在尝试将.NET框架应用程序移植到.NET核心。我们用火鸟做数据库。我更新了依赖项,大多数问题都可以解决,但是在编译和启动程序时,我得到了错误:

无法确定'FirebirdSql.Data.FirebirdClient.FirebirdClientFactory'.类型的提供者工厂的提供程序名称的

确保ADO.NET提供程序已安装或注册在应用程序配置中。

旧的app.config看起来是这样的:

代码语言:javascript
复制
configuration>

  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
  </configSections>

  <system.data>
    <DbProviderFactories>
      <remove invariant="FirebirdSql.Data.FirebirdClient"/>
      <add name="FirebirdClient Data Provider" invariant="FirebirdSql.Data.FirebirdClient" description=".NET Framework Data Provider for Firebird" type="FirebirdSql.Data.FirebirdClient.FirebirdClientFactory, FirebirdSql.Data.FirebirdClient"/>
    </DbProviderFactories>
  </system.data>

system.data在.NET核心中不再可用,一些依赖项已经改变。所以我的新app.config看起来是这样的:

代码语言:javascript
复制
<configuration>

    <configSections>
        <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
        <section name="FirebirdSql.Data.FirebirdClient.FirebirdClientFactory" type="FirebirdSql.Data.FirebirdClient.FirebirdClientFactory, FirebirdSql.Data.FirebirdClient"/>
    </configSections>

    <entityFramework>
        <defaultConnectionFactory type="EntityFramework.Firebird.FbConnectionFactory, EntityFramework.Firebird" />
        <providers>
            <provider invariantName="FirebirdSql.Data.FirebirdClient" type="EntityFramework.Firebird.FbProviderServices, EntityFramework.Firebird"/>
        </providers>
    </entityFramework>

我尝试过不同的方法,我已经阅读了文档,并确保了依赖项EntityFramework.Firebird、EntityFrameworkCore.Firebird和Firebird.Sql.FirebirdClient在其中,其中包含了app.config中的类引用。我真的不知道缺少了什么,我相信这是显而易见的。所以马比在这里知道我能做些什么来提供工厂。

EN

回答 1

Stack Overflow用户

发布于 2022-06-17 11:41:15

因此,答案是您不能再在DbProviderFactory中声明app.config了。我在一些StackOverflow问题中发现了这一点,我再也找不到链接了。

但是,您可以在启动应用程序期间以编程方式注册它:

代码语言:javascript
复制
DbProviderFactories.RegisterFactory("firebird", FirebirdSql.Data.FirebirdClient.FirebirdClientFactory.Instance);

在app.config使用中:

代码语言:javascript
复制
<entityFramework>
    <defaultConnectionFactory type="EntityFramework.Firebird.FbConnectionFactory, EntityFramework.Firebird" />
    <providers>
        <provider invariantName="firebird" type="EntityFramework.Firebird.FbProviderServices, EntityFramework.Firebird"/>
    </providers>
</entityFramework>

提供程序与匹配的invariantName和启动期间注册的密钥匹配。

这套装置对我有效。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72647469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档