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. sharepoint用户信息同步出错

    首先使用工具定位问题,然后权限不够授予权限 C:\Program Files\Microsoft Office Servers\15.0\Synchronization Service\UIShell

  2. [agc004e]Salvage Robots dp

    Description 蛤蟆国的领土我们可以抽象为H*W的笼子,在这片蛤土上,有若干个机器人和一个出口,其余都是空地,每次蛤蟆会要求让所有的机器人向某个方向移动一步,当机器人移动到出口时会被蛤蟆活摘出 ...

  3. jmeter性能测试指标

    1.jp@gc - Actiive Threads Over Time:不同时间的活动用户数量展示(图表) 当前的时间间隔是1毫秒,在setting中可以设置时间间隔以及其他的参数 2.jp@gc - ...

  4. css块元素及内联元素

    块级元素主要有: address , blockquote , center , dir , div , dl , fieldset , form , h1 , h2 , h3 , h4 , h5 , ...

  5. threejs的学习笔记

    很多时候,我们在开发3d效果的时候,容易搞不清楚x,y,z坐标分别指示哪个方向 在开发threejs的时候可以先把坐标系添加到场景中,起到一个启示作用. js // show axes in the ...

  6. webpack---less+热更新 使用

    最近尝试用less写界面,webpack进行打包,然后发现每次修改less时都需要重新执行webpack打包一下,于是就想到了webpack热更新这个功能. 一.使用less less是一门css预处 ...

  7. 返回参数去掉xml格式,以纯json格式返回(转)

    Json 格式显示public static void Register(HttpConfiguration config) { //////////////设置不以xml格式返回 config.Fo ...

  8. 使用 WebClient 來存取 GET,POST,PUT,DELETE,PATCH 網路資源

    WebClient 基本資訊 提供通用方法使用 WebRequest 類別傳送及接收 URI (支援 http:, https:, ftp:,和 file: ) 的資源 Namespace:Syste ...

  9. 123th LeetCode Weekly Contest Add to Array-Form of Integer

    For a non-negative integer X, the array-form of X is an array of its digits in left to right order.  ...

  10. linux 系统管理(二) 磁盘分区

    LINUX下分区命令Parted详解 通常划分分区工具我们用的比较多是fdisk命令,但是现在由于磁盘越来越廉价,而且磁盘空间越来越大. 而fdisk工具他对分区是有大小限制的,它只能划分小于2T的磁 ...