1、依次添加NuGet包 EntityFrameworkNpgsqlEntityFramework6.Npgsql,会自动生成一些配置文件,不过缺少数据库驱动的配置节点:

   <system.data>
<DbProviderFactories>
<!-- 注意这里,安装程序包时,这里的配置并不会自动添加 -->
<remove invariant="Npgsql" />
<add name="Npgsql" invariant="Npgsql" description=".Net Framework Data Provider for Postgresql" type="Npgsql.NpgsqlFactory, Npgsql" />
</DbProviderFactories>
</system.data>
<connectionStrings>
<!-- 数据库连接字符串, 主机, 用户, 密码, 数据库 -->
<add name="mes" connectionString="Server=localhost;Uid=postgres;Password=1234;Database=Mes" providerName="Npgsql"/>
</connectionStrings>

2、添加测试的数据库模型:

     public class BaseModel
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long Id { get; set; }
public string Remark { get; set; }
public DateTime CreTime { get; set; } = DateTime.Now;
public bool IsDel { get; set; } = false;
public DateTime? UpdateTime { get; set; }
} [Table("User")]
public class User : BaseModel
{
public string Account { get; set; }
public string Label { get; set; }
public string Passwd { get; set; }
public long? UpdateUid { get; set; }
} [Table("Order")]
public class Order: BaseModel
{
public string OrderNo { get; set; }
public decimal Qty { get; set; }
public string Style { get; set; }
public string Size { get; set; }
public string Color { get; set; }
public DateTime? DeliveryTime { get; set; }
public string ShipAddress { get; set; }
public string Phone { get; set; }
public long? CustomerId { get; set; } [ForeignKey("CustomerId")]
public User Customer { get; set; }
}

3、数据库上下文:

     public class MesContext:DbContext
{
public MesContext():base("name=mes")
{ } public DbSet<User> Users { get; set; }
public DbSet<Order> Orders { get; set; }
}

4、添加自动迁移配置:

     public class MigrationConfig:DbMigrationsConfiguration<MesContext>
{
public MigrationConfig()
{
AutomaticMigrationsEnabled = true;
//到生产环境后,注释以下
AutomaticMigrationDataLossAllowed = true;
}
}

5、发布代码时,自动迁移到最新:

             using (var db = new MesContext())
{
new MigrateDatabaseToLatestVersion<MesContext, MigrationConfig>("mes").InitializeDatabase(db); //测试添加User
db.Users.Add(new User() {Account = "", Label = "shanghai", Passwd = ""});
db.SaveChanges();
}

6、完整配置文件: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>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="Npgsql" type="Npgsql.NpgsqlServices, EntityFramework6.Npgsql" />
</providers>
</entityFramework>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Npgsql" publicKeyToken="5d8b90d52f46fda7" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.2.5.0" newVersion="3.2.5.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<system.data>
<DbProviderFactories>
<!-- 注意这里,安装程序包时,这里的配置并不会自动添加 -->
<remove invariant="Npgsql" />
<add name="Npgsql" invariant="Npgsql" description=".Net Framework Data Provider for Postgresql" type="Npgsql.NpgsqlFactory, Npgsql" />
</DbProviderFactories>
</system.data>
<connectionStrings>
<!-- 数据库连接字符串, 主机, 用户, 密码, 数据库 -->
<add name="mes" connectionString="Server=localhost;Uid=postgres;Password=1234;Database=Mes" providerName="Npgsql"/>
</connectionStrings>
</configuration>

7、NuGet配置:packages.config

 <?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="EntityFramework" version="6.2.0" targetFramework="net45" />
<package id="EntityFramework6.Npgsql" version="3.1.1" targetFramework="net45" />
<package id="Npgsql" version="3.2.5" targetFramework="net45" />
<package id="System.Threading.Tasks.Extensions" version="4.3.0" targetFramework="net45" />
</packages>

注:第一次自动迁移前需要手动先创建数据库(Mes)

PostgreSQL Entity Framework 自动迁移的更多相关文章

  1. entity framework自动迁移

    第一步,建立测试项目,普通的WinForm类型,EntityMigration: 第二步,从NuGet为项目添加MySql.Data.Entity,由Oracle提供,我选择人气高的: 第三步,建立实 ...

  2. 关于Entity Framework自动关联查询与自动关联更新导航属性对应的实体注意事项说明

    一.首先了解下Entity Framework 自动关联查询: Entity Framework 自动关联查询,有三种方法:Lazy Loading(延迟加载),Eager Loading(预先加载) ...

  3. 使用Entity Framework 自动产生的Sql语句

    对于一个单独实体的通常操作有3种:添加新的实体.修改实体以及删除实体. 1.添加新的实体 Entity Framework Code First添加新的实体通过调用DbSet.Add()方法来实现. ...

  4. Entity Framework 自动生成CodeFirst代码

    前言 在前面的文章中我们提到Entity Framework的“Code First”模式也同样可以基于现有数据库进行开发.今天就让我们一起看一下使用Entity Framework Power To ...

  5. Mysql 该如何 Entity Framework 数据库迁移 和 如何更好的支持EntityFramework.Extended

    问题 1.在使用EntityFramework访问Mysql的时候,使用迁移来生成数据库或者更新数据库时候会遇到一些问题 2.EntityFramework.Extended对Mysql的支持不是很完 ...

  6. Entity Framework数据库迁移

    1.启用数据迁移: enable-Migrations2.增加一条数据库迁移指令:add-Migrations 必须带上一个版本名称,比如AddUsernamePassword完整的指令:add-Mi ...

  7. Entity Framework Core 迁移命令

    Add-Migration init Update-Database init 修改model后,执行迁移的命令 更新数据库 每次更新都要{update}修改 Add-Migration {updat ...

  8. MetadataType来帮助entity framework自动生成的代码进行标注

    真的是,用的时候就四处google,还是记在这里容易找 [MetadataType(typeof(Person.Metadata))] public partial class Person { pr ...

  9. Entity Framework 自动生成代码 如何用继承

    分部类 用接口

随机推荐

  1. WinForm中的重绘 - 按钮等控件的背景渐变色重绘

    注:brush通过起止坐标来控制重绘范围及方向.比如从上到下渐变时,brush第二个Point参数是左下角坐标. private void PaintGradientBackground(Button ...

  2. Maximum file handles allowed by OS

    Linux can open 1024 files concurrently by each process by default: http://m.blog.csdn.net/blog/keepe ...

  3. 值得学习的C开源项目

    C开源项目学习 原文:戳这里 1. Webbench Webbench 是一个在 linux 下使用的非常简单的网站压测工具.它使用 fork ()模拟多个客户端同时访问我们设定的 URL,测试网站在 ...

  4. Ruby 和 OpenSSL CA 证书的问题

    作为一个版本控,总是希望保持电脑中各种软件到最新版本. 最近通过 brew 升级 OpenSSL 和 ruby-build 到最新,尤其是 ruby-build 支持最新的 Ruby 2.2.1,新版 ...

  5. MySql数据库,对varchar类型字段str进行where str=0条件查询时,查询结果是什么

    在用MySQL查询数据的时候,遇到了一个奇怪的问题.用一个varchar类型的字符串str,作为条件与0比较时,会查str不为0的数据. 比如:SELECT id, idnumber from hr_ ...

  6. python 导入模块与使用

    学习python之前一定要了解导入模块是怎么导入的,至少在看代码时不知道能很快的了解别人写的东西是哪里来. Python默认仅安装部分基础或核心模块,启动时也仅加载了基础模块,在需要是再显式的加载其他 ...

  7. Windows 操作系统如何使程序开机自启

    Windows 操作系统如何开机自启 一.前言: 作为一只运维开发,很多时候需要将自己的小工具做开机自启.在 Linux 的世界里,如果你希望一个程序可以开机自启,那么可以在/etc/rc.d/rc. ...

  8. JavaScript中setInterval的用法总结

    setInterval动作的作用是在播放动画的时,每隔一定时间就调用函数,方法或对象.可以使用本动作更新来自数据库的变量或更新时间显示. setInterval动作的语法格式如下:setInterva ...

  9. 2016级算法第一次练习赛-F.AlvinZH的儿时梦想——机器人篇

    864 AlvinZH的儿时梦想----机器人篇 题目链接:https://buaacoding.cn/problem/868/index 思路 中等题. 判断无限玩耍: \(p\) 的值能够承担的起 ...

  10. CSS 加号选择器("+")

    加号选择器("+"):就是指对找到的某类的元素除第一个元素以外的兄弟元素起作用,即第一个元素不起作用,后面的兄弟元素都会起作用   效果:给每一个li加一个border-left, ...