Entity Framework中執行Sql語句

       若是想在EF框架中執行Sql語句,其實很簡單,EF裏面已經提供了相關的方法(此處使用的EF爲EF4.1版本)。app

       EF中提供了兩個方法,一個是執行查詢的Sql語句SqlQuery,另一個是執行非查詢的語句ExecuteSqlCommand。使用起來也很簡單。SqlQuery有兩種形式的,一種是泛型的,一種是非泛型的。好比咱們要在目錄表中查詢ID爲多少的一個分類。能夠這樣寫:框架

entityList = dbContext.Set<Catalog>().SqlQuery("Select * from catalog where CatalogID='1234'").ToList();

       它會爲你自動轉換成對應的實體的。另外,若是你想查詢目錄表中全部的記錄數,那麼你能夠這樣寫:spa

int countNum = dbContext.Database.SqlQuery<int>("Select count(*) from catalog").ToList()[0];

        若是你想執行一些非查詢的Sql語句,你能夠調用ExecuteSqlCommand方法,它會返回受影響的行數。你能夠這樣寫:code

int num = dbContext.Database.ExecuteSqlCommand("delete from catalog where CatalogID='212222' ");

        返回值是執行這個非查詢語句後,受影響的行數。若是你在ExecuteSqlCommand方法中傳入了一個查詢類的Sql語句,無論查詢出來的結果是什麼,它返回的都是-1。如:ip

int num = dbContext.Database.ExecuteSqlCommand("Select count(*) from catalog");//結果是-1
相關文章
相關標籤/搜索