设置EntityFramework 在开发时自动更新数据库
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设置EntityFramework 在开发时自动更新数据库相关的知识,希望对你有一定的参考价值。
1. NuGet 下载EntityFramework.
2. 定义Context 和 打开NuGet 命令 执行 Enable-Migrations , Libaray.DAL.Migrations.Configuration 要在执行命令后自动产生.
using Libaray.Models.Entities; using Libaray.Models.Maps; using System; using System.Collections.Generic; using System.Data.Entity; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Libaray.DAL { public class LibarayContext : DbContext { public LibarayContext(): base("name = LibCon") { Database.SetInitializer(new MigrateDatabaseToLatestVersion<LibarayContext, Libaray.DAL.Migrations.Configuration>()); //重要 } public DbSet<UserModel> UserModels { get; set; } public DbSet<UserInRoleModel> UserInRoleModels { get; set; } public DbSet<UserRoleModel> UserRoleModels { get; set; } public DbSet<BookModel> BookModels { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Configurations.Add(new UserInRoleModelMap()); modelBuilder.Configurations.Add(new UserRoleModelMap()); modelBuilder.Configurations.Add(new UserModelMap()); modelBuilder.Configurations.Add(new BookModelMap()); } } }
3. 修改configuration
namespace Libaray.DAL.Migrations { using System; using System.Data.Entity; using System.Data.Entity.Migrations; using System.Linq; internal sealed class Configuration : DbMigrationsConfiguration<Libaray.DAL.LibarayContext> { public Configuration() { AutomaticMigrationsEnabled = true; AutomaticMigrationDataLossAllowed = true; } protected override void Seed(Libaray.DAL.LibarayContext context) { } } }
4. 实体类例子
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Libaray.Models.Entities { public class BookModel { public Guid BookId { get; set; } public string BookName { get; set; } public string Author { get; set; } public string BookDescription { get; set; } public DateTime BookDate { get; set; } public DateTime CreatedOn { get; set; } public Guid CreatedBy { get; set; } public DateTime UpdatedOn { get; set; } public Guid UpdatedBy { get; set; } } }
5. 实体类Mapping
using Libaray.Models.Entities; using System; using System.Collections.Generic; using System.Data.Entity.ModelConfiguration; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Libaray.Models.Maps { public class BookModelMap : EntityTypeConfiguration<BookModel> { public BookModelMap() { this.HasKey(u => u.BookId); this.Property(u => u.BookId).HasDatabaseGeneratedOption(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity); } } }
以上是关于设置EntityFramework 在开发时自动更新数据库的主要内容,如果未能解决你的问题,请参考以下文章
EntityFramework 7 更名为EntityFramework Core(预发布状态)
EntityFramework6中关闭自动识别变更功能提升效率的一点小技巧
七色花基本权限系统- 让EntityFramework Code First自动合并/迁移/数据初始化