相信很多使用EF的同志們已經知道如何在EF中運行SQL命令了。我在這裏簡單總結下,但願對你們學習EF有所幫助! sql
在 EF第一個版本(.NET 3.5 SP1)中,咱們只能經過將ObjectContext.Connection轉換爲EntityConnection,再把 EntityConnection.StoreConnection轉換爲SqlConnection。有了這個SqlConnection,咱們再建立 SqlCommand便能順利運行SQL命令了。(我的以爲其實很煩,呵呵) 數據庫
在EF4(.NET 4)中,咱們有了全新的API:ObjectContext.ExecuteStoreCommand(...)和 ObjectContext.ExecuteStoreQuery<T>(...)。從函數名不難知道前者是爲了執行某一併沒有返回集的SQL 命令,例如UPDATE,DELETE操做;後者是執行某一個查詢,並能夠將返回集轉換爲某一對象。 c#
using (var ctx = new MyObjectContext()) { ctx.ExecuteStoreCommand("UPDATE Person SET Name = 'Michael' WHERE PersonID = 1"); }
using (var ctx = new MyObjectContext()) { var peopleViews = ctx.ExecuteStoreQuery<PersonView>("SELECT PersonID, Name FROM Person"); } public class PersonView { public int PersonID { get; set; } public string Name { get; set; } }如今有了EF4.1,API的名字又有了些許改變。若是說DbContext將ObjectContext作了包裝,那麼DbContext.Database就是對應於數據庫端信息的封裝。執行SQL命令也天然從 Database類型開始。對應於ExecuteStoreCommand和ExecuteStoreQuery<T>的是 Database.ExecuteSqlCommand和 Database.SqlQuery<T>。
using (var ctx = new MyDbContext()) { ctx.Database.ExecuteSqlCommand("UPDATE Person SET Name = 'Michael' WHERE PersonID = 1"); }
using (var ctx = new MyDbContext()) { var peopleViews = ctx.SqlQuery<PersonView>("SELECT PersonID, Name FROM Person").ToList(); } public class PersonView { public int PersonID { get; set; } public string Name { get; set; } }
有關DbContext.Database屬性的使用與分析,將在近期爲你們奉上! 函數
PS1:這裏爲你們帶來一個好消息:微軟一站式實例代碼庫(Microsoft All-In-One Code Framework)即日起正式遷移至MSDN代碼庫了,新的平臺會幫您更輕鬆地解決開發難題、節省更多時間、得到更友好的用戶體驗。本人做爲這個項目的元老,見到咱們已擁有600多個經典的代碼實例,甚感欣慰啊! 更詳細信息,請看http://msdn.microsoft.com/zh-cn/hh124104.aspx?ocid=ban-f-cn-loc-OC201104-MSDN 學習
以後我將盡力爲你們帶來更多有關EF的代碼實例以及相關的介紹! spa