代码优先数据库和PostgreSql的问题

法尔扎德·尼克南(Farzad Niknam)

我正在使用Code-First项目,我的数据库是PostgreSql。当我使用Npgsql v.2.2.7将项目迁移到PostgreSql时,一切正常。我需要使用新版本的Npsql。为了实现我的目标,我将Npsql升级到了最新版本(4.1.5)。现在,当我使用add-migration时,出现以下错误:

无法加载在ADO.NET提供程序的应用程序配置文件中注册的实体框架提供程序类型'Npgsql.NpgsqlServices,Npgsql.EntityFramework',其名称不变为'Npgsql'。确保使用了程序集限定名称,并且该程序集可用于正在运行的应用程序。有关更多信息,请参见http://go.microsoft.com/fwlink/?LinkId=260882

我已经阅读了许多有关该问题的文章,但是没有一篇文章能帮助我解决问题。另外,我在项目中使用了Dapper Contrib。如上所述,升级Npgsql后出现了问题。

使用此软件包的正确方法是什么?

这是我的App.Config文件

<?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <configSections>
      <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
      <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
      </configSections>
      <entityFramework>
        <providers>
          <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
          <provider invariantName="Npgsql" type="Npgsql.NpgsqlServices, Npgsql.EntityFramework" />
        </providers>
      </entityFramework>
      <system.data>
        <DbProviderFactories>
          <add name="Npgsql Data Provider" invariant="Npgsql" support="FF" description="Data Provider for PostgreSQL" type="Npgsql.NpgsqlFactory, Npgsql" />
        </DbProviderFactories>
      </system.data>
      <connectionStrings>
        <add name="KMSystemContext" connectionString="Server=****;Database=KMSystem;User Id=postgres;Password=***;" providerName="Npgsql" />
      </connectionStrings>
      <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <dependentAssembly>
            <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-4.0.6.0" newVersion="4.0.6.0" />
          </dependentAssembly>
          <dependentAssembly>
            <assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-4.0.1.1" newVersion="4.0.1.1" />
          </dependentAssembly>
          <dependentAssembly>
            <assemblyIdentity name="System.ComponentModel.Annotations" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-4.2.1.0" newVersion="4.2.1.0" />
          </dependentAssembly>
          <dependentAssembly>
            <assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1" />
          </dependentAssembly>
          <dependentAssembly>
            <assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-4.1.4.0" newVersion="4.1.4.0" />
          </dependentAssembly>
          <dependentAssembly>
            <assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
          </dependentAssembly>
          <dependentAssembly>
            <assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
          </dependentAssembly>
        </assemblyBinding>
      </runtime>
    </configuration>

已安装的软件包为:

  • Npgsql 4.1.5
  • 实体框架6.0.0.0
法尔扎德·尼克南(Farzad Niknam)

搜索一会儿后,我们在所有解决方案的项目中安装了EntityFramework6.Npgsql 6.4.1软件包(解决方案中有一些类库和WinApps项目)。随着该软件包的更新,Npgsql也更新到新版本(4.1.3)因此,app.config更改为:

<entityFramework>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
      <provider invariantName="Npgsql" type="Npgsql.NpgsqlServices, Npgsql.EntityFramework" />
    </providers>
    <defaultConnectionFactory type="Npgsql.NpgsqlConnectionFactory, EntityFramework6.Npgsql" />
  </entityFramework>

需要如下更改app.config。只是在DataContext所在的项目中(DataLayer)

<provider invariantName="Npgsql" type="Npgsql.NpgsqlServices, Npgsql.EntityFramework" />

用。。。来代替 :

<provider invariantName="Npgsql" type="Npgsql.NpgsqlServices, EntityFramework6.Npgsql" />

最后,我们必须将DataLayer(带有DataContext)设置为StartUp Project。(设置为StartUp Project),然后我们可以使用PackageManagerConsole中的add-migrationupdate-database命令使用PostgreSql数据库迁移代码第一个项目

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Entity Framework代码优先的数据库问题

来自分类Dev

EF代码优先,数据库优先

来自分类Dev

是否可以将数据库优先模型和代码优先模型与实体框架混合使用?

来自分类Dev

在实体框架中使用数据库优先实体和代码优先实体

来自分类Dev

代码优先数据库生成查询

来自分类Dev

现有数据库中代码优先的外键问题

来自分类Dev

数据库优先和区域

来自分类Dev

数据库优先和区域

来自分类Dev

数据库优先和视图模型

来自分类Dev

代码优先方法,数据库和所有实例的位置(v110等)

来自分类Dev

MVC 5,EF 6和“数据库中的代码优先”存储过程

来自分类Dev

EF7(代码优先)+ SQLite不会创建数据库和模型表

来自分类Dev

实体框架代码优先-带有产品和产品选项的目录的数据库架构

来自分类Dev

代码优先使用现有数据库 vs 数据库优先和具有版本控制的并发开发

来自分类Dev

使用实体框架的最佳方法(数据库优先,模型优先,代码优先)

来自分类Dev

多个数据库的代码优先迁移?

来自分类Dev

代码优先映射到数据库视图

来自分类Dev

运行代码优先迁移更新数据库时出错

来自分类Dev

代码优先:创建表但不创建数据库

来自分类Dev

未从模型创建代码优先数据库

来自分类Dev

通过代码优先EF创建数据库

来自分类Dev

代码优先实体框架未保存到数据库

来自分类Dev

多个数据库的代码优先迁移?

来自分类Dev

MySql数据库中的实体框架代码优先迁移

来自分类Dev

在Visual Studio 2015中创建代码优先的数据库

来自分类Dev

代码优先移植到生产数据库

来自分类Dev

实体框架代码优先定义数据库名称

来自分类Dev

将代码优先实体框架指向创建的数据库

来自分类Dev

在代码优先的 SQLite 中初始化数据库

Related 相关文章

  1. 1

    使用Entity Framework代码优先的数据库问题

  2. 2

    EF代码优先,数据库优先

  3. 3

    是否可以将数据库优先模型和代码优先模型与实体框架混合使用?

  4. 4

    在实体框架中使用数据库优先实体和代码优先实体

  5. 5

    代码优先数据库生成查询

  6. 6

    现有数据库中代码优先的外键问题

  7. 7

    数据库优先和区域

  8. 8

    数据库优先和区域

  9. 9

    数据库优先和视图模型

  10. 10

    代码优先方法,数据库和所有实例的位置(v110等)

  11. 11

    MVC 5,EF 6和“数据库中的代码优先”存储过程

  12. 12

    EF7(代码优先)+ SQLite不会创建数据库和模型表

  13. 13

    实体框架代码优先-带有产品和产品选项的目录的数据库架构

  14. 14

    代码优先使用现有数据库 vs 数据库优先和具有版本控制的并发开发

  15. 15

    使用实体框架的最佳方法(数据库优先,模型优先,代码优先)

  16. 16

    多个数据库的代码优先迁移?

  17. 17

    代码优先映射到数据库视图

  18. 18

    运行代码优先迁移更新数据库时出错

  19. 19

    代码优先:创建表但不创建数据库

  20. 20

    未从模型创建代码优先数据库

  21. 21

    通过代码优先EF创建数据库

  22. 22

    代码优先实体框架未保存到数据库

  23. 23

    多个数据库的代码优先迁移?

  24. 24

    MySql数据库中的实体框架代码优先迁移

  25. 25

    在Visual Studio 2015中创建代码优先的数据库

  26. 26

    代码优先移植到生产数据库

  27. 27

    实体框架代码优先定义数据库名称

  28. 28

    将代码优先实体框架指向创建的数据库

  29. 29

    在代码优先的 SQLite 中初始化数据库

热门标签

归档