在從ef切換成efcore2.0的過程中,遇到了儲存過程的實現問題。
在ef中呼叫儲存過程,非常方便,能夠直接將結果轉換成對應的結果類。
如**中的database.sqlquery()
publicvirtual listgetstatsplancompleteandadjustitem(datetime minexecutedate, datetime maxexecutedate, guid organizationid)
public ienumerablesqlquery(string sql, params
object
parameters)
然而,在ef core2.0中還沒有實現儲存過程的呼叫,沒有sqlquery方法。
查詢網上基本採用rawsql的方式來實現。but有侷限,需要用dbcontext中的dbset.fromsql方法,返回值是list,為啥要借用dbset呢,這個方法純粹借用表查詢的方法,好多儲存過程返回的未必是entity,不能將儲存過程的結果轉換成自己想要的資料型別,所以非常棘手。感覺 不是efcore呼叫 儲存過程的思路。
using (var datacontext = newsampledbcontext()) ");
var result =query.tolist();
assert.notnull(result);
}
採用第二思路,用傳統的sqlcommand方法,執行儲存過程,利用executereader讀取結果後,採用反射將資料轉換成想要的泛型結果
作為積極吃ef core這個螃蟹的人,積極記錄分享這個筆記,供其他朋友參考。感覺給力的話,贊助點紅包哈
public virtual listgetperformanceplancompleteandadjustitem(datetime minexecutedate, datetime maxexecutedate, guid organizationid)
public ienumerablesqlquery(string sql, params object parameters) where telement:new ()}data.add(item);
}dr.dispose();
return data;
}}
ef mysql 儲存過程 EF 儲存過程
one 理論 a 定義 儲存過程 stored procedure 是一組為了完成特定功能的sql語句集合,經編譯後儲存在伺服器端的資料庫中,利用儲存過程可以加速sql語句的執行。儲存過程分為系統儲存過程和自定義儲存過程。1.系統儲存過程在master資料庫中,但是在其他的資料庫中可以直接呼叫,並且...
EF 呼叫儲存過程
1.執行返回表型別的儲存過程 主表從表資料一起關聯查詢 alter proc dbo getcategory cidint asbegin select fromcategories where cid cid end 執行此儲存過程的 如下 public ienumerablegetcategor...
EF呼叫儲存過程
1 無引數查詢 var model db.database.sqlquery select from userinfoes tolist 2 有參查詢 var model db.database.sqlquery select from userinfoes where id id new sqlp...