参考以下资料
一、EF code First数据迁移学习笔记
二、EF应用一:Code First模式
三、EF CodeFirst下,当实体结构发生修改怎么更新数据库结构
EF安装过程
一、输入命令:Install-Package EntityFramework 进行安装。
二、config 增加节点
注:具体信息根据实际情况来进行填写
<connectionStrings>
<add name="DataBase" providerName="System.Data.SqlClient" connectionString="Server=.;Database=EFCodeFirst2;User Id=sa;Password=123456" />
</connectionStrings>
三、在程序包管理控制台输入命令:Enable-Migrations 增加迁移功能
在运行完命令之后就会发现自己的项目文件里面多了一个Migrations文件,下一步我们需要对这个文件进行操作。
- AutomaticMigrationsEnabled = true; 是否启动自动迁移 如果是false 无法用命令
- AutomaticMigrationDataLossAllowed =true; 指示在自动迁移期间数据丢失是否可接受。
如果设置为false,如果数据丢失可能会在自动迁移过程中发生,则会引发异常。如果不加,可以用 Update-Database -force 后面加上 -force 一样可以实现 AutomaticMigrationDataLossAllowed =true 效果。
四、增加迁移节点
- 全称: Add-Migration -StartupProjectName EF43
在指定的项目中增加一个迁移点,此命令后会要求输入一个 Name 参数,此参数的值为迁移点名称
假设输入的迁移点名称为 MyFirstTest 则会生成一个类似如下的文件 201202290718442_MyTestFirst.cs,其包含两个方法 Up() 和 Down(),分别用于此迁移点的升级和降级 - 简写方式:Add-Migration 【迁移文件名称】
五、将指定的项目的数据库结构升级到最新
- Update-Database -StartupProjectName EF43
- 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)
EF针对Npgsql数据库
一、增加依赖
Install-Package 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);
}