我們一般對數據主要有增刪查以及更新這幾中基本操作形式,本文就以前面的文章中的代碼為例,簡單的介紹一下在Entity Framework中基本操作的使用方法。
查詢
1. 通過linq語句查詢
var query = from b in db.Blogs
where b.BlogId == 1 && b.Name == "my blog"
select b;
var blog = query.FirstOrDefault();
這種方式的好處是可以類似Sql語句一樣使用非常復雜的查詢條件,對於復雜的查詢來說非常給力。
2. 使用Find函數通過主鍵查詢
var blog = db.Blogs.Find(1);
這種方式類似於字典式的查詢,通過主鍵查詢到數據;是我們使用過程中用得最多的一種方式。在使用Find查詢時,如果指定的主鍵無法查詢到結果,則返回null,不會拋異常。
添加:
db.Blogs.Add(new Blog() { BlogId = 2, Name = "test2" });
db.SaveChanges();
添加操作和我們操作集合是一樣的,不過這里需要調用一下SaveChanges函數將變更保持到數據庫。
更新:
var blog = db.Blogs.Find(1);
blog.Name = "test1";
db.SaveChanges();
更新分為三步:查詢數據、修改數據、保存結果;還是比較簡單的。
刪除:
var blog = db.Blogs.Find(1);
db.Blogs.Remove(blog);
db.SaveChanges();
刪除也是分為三步:查詢數據、刪除數據、保存結果。需要注意的是,如果在Remove中傳入null函數,則會拋異常。
批量刪除和批量更新:
批量刪除和批量更新在我們常規的集合操作中基本上用不到,但在Sql操作中卻是一個非常常見的操作。從理論上來講我們可以通過Lambda表達式非常優雅的實現這一操作,但EntityFramework卻不支持,只能通過執行sql語句來刪除。這也是EntityFramework的一個一直被人詬病的地方。
不過得益於C#靈活而強大的語法,已經有人通過擴展函數來實現這一功能,感興趣的可以看下老趙的使用Lambda Expression批量刪除數據這篇文章,我這里就不多講了。