本文僅用來學習記錄。
搭建項目架構的時候,需要在類庫中進行CodeFirst數據遷移
1.在項目的解決方案中,添加類庫ERPFrame.Model

2.在類庫項目中 添加實體模型和數據上下文
其中
TopBaseModel是基類,用於生成唯一標識Guid

1 public class TopBaseModel 2 { 3 private Guid _id; 4 public Guid ID { 5 get { 6 if (_id == Guid.Empty) { 7 _id = Guid.NewGuid(); 8 } 9 return _id; 10 } 11 set { 12 _id = value; 13 } 14 } 15 }
BaseModel繼承TopBaseModel,生成創建人,創建日期,修改人,修改日期
1 using System.ComponentModel.DataAnnotations; 2 public class BaseModel:TopBaseModel 3 { 4 [Display(Name ="創建時間")] 5 public DateTime? CreateTime { get; set; } 6 [Display(Name ="創建人")] 7 [StringLength(50, ErrorMessage = "{0}最多輸入{1}個字符")] 8 public string CreateBy { get; set; } 9 [Display(Name = "修改時間")] 10 public DateTime? UpdateTime { get; set; } 11 [Display(Name = "修改人")] 12 [StringLength(50, ErrorMessage = "{0}最多輸入{1}個字符")] 13 public string UpdateBy { get; set; } 14 }
Frame_User實體模型,繼承BaseModel
1 using System.ComponentModel.DataAnnotations; 2 public class Frame_User:BaseModel 3 { 4 [Display(Name ="用戶")] 5 [StringLength(50, ErrorMessage = "{0}最多輸入{1}個字符")] 6 public string UserName { get; set; } 7 [Display(Name = "角色名")] 8 [StringLength(50, ErrorMessage = "{0}最多輸入{1}個字符")] 9 public string RoleName { get; set; } 10 }
ERPFrameDBContext數據上下文
1 public class ERPFrameDBContext : DbContext 2 { 3 public ERPFrameDBContext(DbContextOptions<ERPFrameDBContext> options) : base(options) 4 { 5 } 6 7 public DbSet<Frame_User> Frame_User { get; set; } 8 }
3. 項目文件配置
(1)“appsettings.json”添加配置項,數據庫連接字符串
1 "ConnectionStrings": { 2 "todoContext": "Server=.;DataBase=ERPFrame;uid=sa;pwd=123456" 3 },
(2)“Startup.cs”依賴注入 讀取上一步配置的數據庫字符串信息,這里的
ERPFrameDBContext即上面的
數據上下文
services.AddDbContext<ERPFrameDBContext>(opt => opt.UseSqlServer(Configuration.GetConnectionString("todoContext")));

如上所有配置完成后,重新編譯成功后,在控制台進行數據庫遷移 :
(1)執行“Add-Migration 版本信息”,如下圖
(2)執行成功后,在類庫項目中會顯示對應的數據庫遷移記錄和快照


(3)執行“update-database”,同步表結構,在數據庫便能看到對應的表

注:
可能會遇到的問題:
Both Entity Framework 6.x and Entity Framework Core commands are installed. The Entity Framework 6 version is executing. You can fully qualify the command to select which one to execute, 'EntityFramework\Update-Database' for EF6.x and 'EntityFrameworkCore\Update-Database' for EF Core.
解決方法:
EntityFrameworkCore\Add-Migration InitialDb
EntityFrameworkCore\Update-Database