.NET Core使用EF Core框架

概述

Entity Framework (EF) Core 是輕量化、可擴展、開源和跨平臺版的常用 Entity Framework 數據訪問技術。
EF Core 可用作對象關係映射程序 (O/RM),以便於 .NET 開發人員能夠使用 .NET 對象來處理數據庫,這樣就不必經常編寫大部分數據訪問代碼了。

說簡單點,就是在我們做增刪改查的時候,不用再寫非常繁瑣的SQL語句,
在以前,我們寫完SQL語句後,查詢出來的數據還要手動映射爲我們的實體類。但現在,這些東西由EF來幫我們完成

安裝EF Core

我們使用NuGet程序包來安裝EF Core所需要的包
右鍵項目> 管理NuGet程序包

  1. Microsoft.EntityFrameworkCore.SqlServer
  2. Microsoft.EntityFrameworkCore.Tools (EF工具包,創建實體)
    在這裏插入圖片描述
    在這裏插入圖片描述安裝完成之後,我們打開程序包管理控制檯
    工具>NuGet程序包管理器>程序包管理控制檯
    在這裏插入圖片描述打開控制檯後輸入以下命令:

Scaffold-DbContext -Force “Server=LAPTOP-FPRJ0F62\SQLEXPRESS;Database=ShopDB;uid=sa;Password=123;” Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models/DataModels

命令格式:

Scaffold-DbContext -Force “Server=服務器名;Database=數據庫名;uid=賬戶;Password=密碼;” (EF組件名)Microsoft.EntityFrameworkCore.SqlServer -OutputDir (實體類存儲位置)Models/DataModels

執行命令後,系統會自動根據表創建實體類
在這裏插入圖片描述這裏系統會創建一個繼承了DBConext類的ShopDBContext,這個ShopDBContext是根據你的數據庫名生成的,這個類是連接數據庫的橋樑

使用EF Core增刪改查

單表查詢

這裏我們創建一個asp.net mvc類型的項目
查詢數據非常簡單

class Program
    {
        static void Main(string[] args)
        {
            GetProductList();
        }
		//獲取所有產品
        public static void GetProductList()
        {
            using (ShopDBContext db=new ShopDBContext())
            {
                var produces = db.Products;
                Console.WriteLine("編號\t產品名稱");
                foreach (var item in produces)
                {
                    Console.WriteLine("{0}\t{1}",item.Id,item.Name);
                }
            }
        }
    }

執行結果:
在這裏插入圖片描述在這裏插入圖片描述
在執行db.Products的時候,EF並不會立即去數據庫查詢,他是先定義好了一組SQL語句,當遇到ToList()或者是循環的時候,他纔會去數據庫查詢數據

插入數據

public static void InsertProduct()
        {
            using (ShopDBContext db = new ShopDBContext())
            {
            	//實例化一個Products 類,數據庫的ID是自增的,所以新增數據的時候,不需要添加ID
                Products products = new Products()
                {
                    Name = "C#從入門到精通"
                };
                //添加一行數據
                db.Products.Add(products);
                //只有在執行db.SaveChanges()的時候,纔會去保存數據
                //db.SaveChanges會返回受影響行數
                int res= db.SaveChanges();
                Console.WriteLine(res);
            }
            
            
        }

執行結果:
在這裏插入圖片描述
在這裏插入圖片描述新增數據成功,新增數據的時候一定要db.SaveChanges,切記切記

修改數據

我們就修改下我們剛剛新增的數據
在修改數據的時候,要先查詢出數據,EF要確保數據庫有這條數據纔去修改

public static void UpdateProduct()
        {
            using (ShopDBContext db = new ShopDBContext())
            {
                //Find()可以按照ID查詢數據
                Products products = db.Products.Find(11);
                //修改數據
                products.Remark = "C#從入門到入墳";
                products.Price = 30;
                //保存數據
                int res = db.SaveChanges();
                Console.WriteLine(res);
                
            }
        }

在修改的時候,就不需要執行db.Products.Add();
執行結果:
在這裏插入圖片描述
在這裏插入圖片描述

刪除數據

和修改數據一樣,我們要先從數據庫查詢出這條數據,然後在進行刪除

public static void DeleteProduct()
        {
            using (ShopDBContext db = new ShopDBContext())
            {
                //Find()可以按照ID查詢數據
                Products products = db.Products.Find(11);
                db.Remove(products);
                //保存數據
                int res = db.SaveChanges();
                Console.WriteLine(res);

            }
        }

使用db.Remove(products);刪除數據

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章