EF基礎的增刪改查VS2017(Database First)
阿新 • • 發佈:2019-12-31
一、ORM 是什麼
在瞭解Entity Framework是什麼前,我們先的知道ORM是什麼,ORM是一種物件關係對映思想,我們可以這樣理解:
- 其中O代表的是c#語言中的實體物件,object
- M代表的是資料庫的表
- R代表的是關係(表實體和表的相互轉化)
二、Entity Framework是什麼
簡稱EF是微軟對ORM(物件關係對映)思想的一種框架,底層仍然是ADO.NET,即對資料庫的訪問。
三、Entity Framework的真刪改查
開始操作前,先建立一個資料庫
- 第一步,新建一個控制檯應用程式,右鍵新增新建項,新增一個ADO實體資料模型
- 第二步,選擇Database First模式,資料庫優先
- 第三步,新建連線,如果以前沒有使用過的話,新建一個資料庫連線
- 第四步,一一對應添就好了
- 第五步,點是,並且勾選,如果不點是的話,你對資料庫的一些訪問許可權會被遮蔽,還得手動去設定,勾選也一樣(這裡可能描述不怎麼全面,不點是的話,我們會發現訪問資料的連線字串裡密碼會沒有,沒有了怎麼訪問資料庫呢?是否勾選,可以解決我們在不同專案中連線字串的配置問題)
- 第六步,選擇要操作的表
- 第七步,在,相應的檔案裡,我們可以看到相對於資料庫的上下文,和表實體
- 第八步,實體化一個新的資料庫上下文,(資料庫上下文的意思就是,負責將對錶物件的操作弄到資料庫上),並新增到資料庫中 在這裡我們可以看到我們資料庫上下文的名稱
namespace EFDemo
{
class Program
{
static void Main(string[] args)
{
Add();
Console.ReadKey();
}
private static void Add()
{
EFDemoEntities ef = new EFDemoEntities();//例項化上下文
EFTableSet user = new EFTableSet()//例項化一個使用者類
{
Id=1,Name="張三" ,Age="19"
};
ef.EFTableSet.Add(user);//新增到資料物件裡
ef.SaveChanges();//儲存到資料庫
}
}
}
複製程式碼
- 第九步,查詢(lambda表示式查詢,和linq查詢),倆種方式效能都一樣啦,哪個用的爽用哪個嘍
private static void Select()
{
EFDemoEntities ef = new EFDemoEntities();//例項化上下文
var list = ef.EFTableSet.Where(m => true).ToList();//lambda表示式查詢
var list2 = from item in ef.EFTableSet select item;//link表示式查詢
foreach (var item in list2)
{
Console.WriteLine(" "+item.Id+" "+item.Name+" "+item.Age);
}
}
複製程式碼
- 第十步,刪除,修改,刪除和修改都是的先查詢到這一行資訊,存在,才能去刪除,否則的話,沒有,怎麼刪呢? 修改刪除都一樣,都是新增到上下文,將實體的物件的狀態修改一下就好了
private static void Update(int id)
{
EFDemoEntities ef = new EFDemoEntities();//例項化上下文
EFTableSet user = ef.EFTableSet.Where(m => m.Id == id).FirstOrDefault();//FirstOrDefault查詢第一個
if (user != null)
{
user.Name = "李四";
user.Age = "20";//修改的內容
ef.EFTableSet.Attach(user);//附加到上下文
ef.Entry<EFTableSet>(user).State = System.Data.Entity.EntityState.Modified;//修改實體的狀態為修改
ef.SaveChanges();//儲存到資料庫
Console.WriteLine("修改成功");
}
else
{
Console.WriteLine("查詢不到物件,無法修改");
}
}
複製程式碼
結束語,“簡潔是智慧的靈魂”
EF能夠以相對傳統開發編寫更少的程式碼來建立和維護應用程式
呼~可算寫完了,我們使用EF可以發現,他非常方便,不需要我們去寫SQL語句了,而且他是強型別的,當然對於一些複雜的查詢我們仍然可在EF中使用!