微軟跨平台ORM框架之EFCore


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM