EFCore是微軟推出的跨平臺ORM框架,想較於EF6.X版本,更加輕量級。EFCore目前已經更新到2.x。 接下來用CodeFirst的方式來使用EFCore. 1.創建控制台程式 2.引入EFCore的Nuget包和Sqlserver的擴展(因為我這裡用的Sqlserver資料庫,若是別的數據 ...
EFCore是微軟推出的跨平臺ORM框架,想較於EF6.X版本,更加輕量級。EFCore目前已經更新到2.x。
接下來用CodeFirst的方式來使用EFCore.
1.創建控制台程式
2.引入EFCore的Nuget包和Sqlserver的擴展(因為我這裡用的Sqlserver資料庫,若是別的資料庫如Mysql引入相應的包即可)。
3.創建繼承成自DbContext上下文,並重載OnConfiguring方法來構建資料庫連接字元串
public class CoreDbContext : DbContext { /// <summary> /// 重載OnConfiguring構建資料庫連接字元串 /// </summary> /// <param name="optionsBuilder"></param> protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { // 這裡直接寫的字元串,實際項目中寫在配置文件中,然後讀取。這裡的EFCoreDB就是生成的資料庫名 string connectionString = "server=127.0.0.1;uid=sa;pwd=sa123;database=EFCoreDB"; optionsBuilder.UseSqlServer(connectionString); } }
4.創建Person實體類,通過EFCore映射成資料庫中的表。併在上下文中註冊
public class Person { public int ID { get; set; } public int Age { get; set; } public bool Status { get; set; } public string Name { get; set; } public DateTime CreateTime { get; set; } }
public class CoreDbContext : DbContext { /// <summary> /// 重載OnConfiguring構建資料庫連接字元串 /// </summary> /// <param name="optionsBuilder"></param> protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { // 這裡直接寫的字元串,實際項目中寫在配置文件中,然後讀取 string connectionString = "server=127.0.0.1;uid=sa;pwd=sasa;database=EFCoreDB"; optionsBuilder.UseSqlServer(connectionString); } // 註冊實體 public DbSet<Person> Person { get; set; } }
5.在Program文件中初始化資料庫
class Program { static void Main(string[] args) { var context = new CoreDbContext(); // 告訴EFCore我們要創建資料庫 context.Database.EnsureCreated(); //Console.WriteLine("Hello World!"); } }
6.啟動程式,查看效果
資料庫和Person表已生成
生成的表結構
這裡解釋一下,在實體中如果有名為ID的欄位,或者實體名+ID的欄位如:PersonID,那麼EFCore生成的表會自動標識為主鍵。
備註:上邊用來創建的資料庫的方法 context.Database.EnsureCreated(); 如果存在當前資料庫則不會創建。
那麼增加了實體,該如何更新資料庫呢? context.Database.EnsureDeleted(); 這個方法顧名思義是用來刪除資料庫。
先調用EnsureDeleted 在調用 EnsureCreated 實現更新資料庫的操作。
class Program { static void Main(string[] args) { var context = new CoreDbContext(); // 刪除資料庫 context.Database.EnsureDeleted(); // 告訴EFCore我們要創建資料庫 context.Database.EnsureCreated(); //Console.WriteLine("Hello World!"); } }
好嘞! 使用EFCore生成資料庫和表就完成了。