微軟跨平臺ORM框架之EFCore
阿新 • • 發佈:2019-01-24
status ext fig 配置 實現 ogr ons 通過 code
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 boolStatus { 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生成數據庫和表就完成了。
微軟跨平臺ORM框架之EFCore