EF中提供了兩個方法,一個是執行查詢的Sql語句SqlQuery,另外一個是執行非查詢的語句ExecuteSqlCommand。SqlQuery有兩種形式的,一種是泛型的,一種是非泛型的。比如我們要在目錄表中查詢ID為多少的一個分類。可以這樣寫:
entityList = dbContext.Set<Catalog>().SqlQuery("Select * from catalog where CatalogID='1234'").ToList();
它會為你自動轉換成對應的實體的。另外,如果你想查詢目錄表中所有的記錄數,那麼你可以這樣寫:
int countNum = dbContext.Database.SqlQuery<int>("Select count(*) from catalog").ToList()[0];
如果你想執行一些非查詢的Sql語句,你可以呼叫ExecuteSqlCommand方法,它會返回受影響的行數。你可以這樣寫:
int num = dbContext.Database.ExecuteSqlCommand("delete from catalog where CatalogID='212222' ");
返回值是執行這個非查詢語句後,受影響的行數。如果你在ExecuteSqlCommand方法中傳入了一個查詢類的Sql語句,不管查詢出來的結果是什麼,它返回的都是-1。如:
int num = dbContext.Database.ExecuteSqlCommand("Select count(*) from catalog");//結果是-1 轉自:https://www.cnblogs.com/xiaoxiangfeizi/p/3551855.html,表示感謝。