1. 程式人生 > >微軟跨平臺ORM框架之EFCore

微軟跨平臺ORM框架之EFCore

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 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生成數據庫和表就完成了。

微軟跨平臺ORM框架之EFCore