EF的CodeFirst模式自动迁移(适用于开发环境)
程序员文章站
2022-03-29 11:33:00
EF的CodeFirst模式自动迁移(适用于开发环境) 1、开启EF数据迁移功能 NuGet包管理器 >程序包管理控制台 >Enable-Migrations 2、数据库上下文设置为迁移至最后一个版本 MigrateDatabaseToLatestVersion<数据库上下文,迁移配置文件> 3、设 ......
EF的CodeFirst模式自动迁移(适用于开发环境)
1、开启EF数据迁移功能
NuGet包管理器------>程序包管理控制台---------->Enable-Migrations
2、数据库上下文设置为迁移至最后一个版本
MigrateDatabaseToLatestVersion<数据库上下文,迁移配置文件>
using Models.Migrations; namespace Models { public class AppDBContext : DbContext, IDisposable { static AppDBContext() { Database.SetInitializer<AppDBContext>(new MigrateDatabaseToLatestVersion<AppDBContext, Configuration>()); } public AppDBContext() : base("DefaultConnection") { Database.Log = GetLog; //获取EF执行的sql } /// <summary> /// 释放资源 /// </summary> public new void Dispose() { base.Dispose(); GC.SuppressFinalize(this); } /// <summary> /// 析构函数 /// </summary> ~AppDBContext() { base.Dispose(); } private void GetLog(string sql) { //日志输出到控制台 System.Diagnostics.Debug.Write(sql); } protected override void OnModelCreating(DbModelBuilder modelBuilder) { //解决EF动态建库数据库表名变为复数问题 modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); } }
3、设置迁移配置文件,允许自动迁移和允许迁移时数据丢失(只适用于开发环境)
namespace Models.Migrations { using System; using System.Data.Entity; using System.Data.Entity.Migrations; using System.Linq; internal sealed class Configuration : DbMigrationsConfiguration<Models.AppDBContext> { public Configuration() { AutomaticMigrationsEnabled = true; AutomaticMigrationDataLossAllowed = true; ContextKey = "Models.AppDBContext"; } protected override void Seed(Models.AppDBContext context) { // This method will be called after migrating to the latest version. // You can use the DbSet<T>.AddOrUpdate() helper extension method // to avoid creating duplicate seed data. } } }
实体变动,不再需要手动迁移,数据库将自动更新,AutomaticMigrationDataLossAllowed 设置为true迁移可能导致数据丢失
上一篇: 短信验证码获取代码实现教程