参考URL:
https://www.cnblogs.com/icyJ/p/migration.html
https://www.cnblogs.com/dotnet261010/p/7119351.html
https://blog.csdn.net/qq_38507850/article/details/80792533
一、输入命令:Install-Package EntityFramework进行安装。
二、在程序包管理控制台输入命令:enable-migrations 增加迁移功能
在运行完命令之后就会发现自己的项目文件里面多了一个Migrations文件,下一步我们需要对这个文件进行操作。
AutomaticMigrationsEnabled = true;
是否启动自动迁移 如果是false 无法用命令
AutomaticMigrationDataLossAllowed =true
指示在自动迁移期间数据丢失是否可接受。如果设置为false,如果数据丢失可能会在自动迁移过程中发生,则会引发异常。
如果不加,可以用 Update-Database -force 后面加上 -force 一样可以实现 AutomaticMigrationDataLossAllowed =true 效果。
/*
* 通过 NuGet 下载 Entity Framework 4.3
*
* 关于 Code First 下自动更新数据库结构(Automatic Migrations)的相关说明如下:
* 注:需要通过 NuGet 的 Package Manager Console 输入相关命令
*
* 在更新了实体结构后输入如下命令
* 1、Enable-Migrations
* 启动迁移功能,会在项目根目录下生成 Migrations 文件夹,其内通常会有两个文件
* 1. Configuration.cs - 相关配置,如是否需要自动迁移(默认为 false)等
* 2. 201202290715581_InitialCreate.cs - 未迁移前的数据结构,前半部分为时间戳
*
* 2、Add-Migration -StartupProjectName EF43
Add-Migration 【迁移文件名称】
* 在指定的项目中增加一个迁移点,此命令后会要求输入一个 Name 参数,此参数的值为迁移点名称
* 假设输入的迁移点名称为 MyFirstTest 则会生成一个类似如下的文件 201202290718442_MyTestFirst.cs,其包含两个方法 Up() 和 Down(),分别用于此迁移点的升级和降级
*
* 3、Update-Database -StartupProjectName EF43(将指定的项目的数据库结构升级到最新)
Update-Database【迁移文件名称】
* Update-Database -TargetMigration:"201202290718442_MyTestFirst",将当前数据库结构升级到此迁移点(无参数 -TargetMigration 则为升级到最新)
* Update-Database -Script,显示用于更新数据库结构的相关 sql 代码
* Update-Database -Script -SourceMigration:"aaa" -TargetMigration:"bbb",显示将迁移点“aaa”升/降级到迁移点“bbb”的相关 sql 代码
*
* 注:如果发生“System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation”异常,请查看是否显示指定了项目名(本例为 -StartupProjectName EF43)
*/
postgre 数据库
添加依赖
一、Npgsql.EntityFramework
二、config文件增加节点
<system.data>
<DbProviderFactories>
<remove invariant="Npgsql"/>
<add name="Npgsql Data Provider" invariant="Npgsql" description=".Net Data Provider for PostgreSQL" type="Npgsql.NpgsqlFactory, Npgsql, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7" support="FF"/>
</DbProviderFactories>
</system.data>
三、dbContext增加重写
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.HasDefaultSchema("public");
base.OnModelCreating(modelBuilder);
}