概述
Entity Framework (EF) Core 是輕量化、可擴展、開源和跨平臺版的常用 Entity Framework 數據訪問技術。
EF Core 可用作對象關係映射程序 (O/RM),以便於 .NET 開發人員能夠使用 .NET 對象來處理數據庫,這樣就不必經常編寫大部分數據訪問代碼了。
說簡單點,就是在我們做增刪改查的時候,不用再寫非常繁瑣的SQL語句,
在以前,我們寫完SQL語句後,查詢出來的數據還要手動映射爲我們的實體類。但現在,這些東西由EF來幫我們完成
安裝EF Core
我們使用NuGet程序包來安裝EF Core所需要的包
右鍵項目> 管理NuGet程序包
- Microsoft.EntityFrameworkCore.SqlServer
- 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);刪除數據