Entity Framework 執行Function
在Enity Framewokr要執行DB中的Function。
有兩種方式:
1.把Function當一般Sql Command來執行取結果
2.透過Linq 來MappingDB的Function。
今天針對第二點來撰寫,實際應該也比較多是趨近於第二種。
先看MSDN:https://msdn.microsoft.com/en-us/library/vstudio/dd456847%28v=vs.100%29.aspx
以下說明範例來源就是MSDN裡面的範例。
第一步:
將Function拉進EDMX中。
第二步:
建立一個Function來Map EDMX中的Function。
透過EdmFunction這個Attribute來做Mapping的動作。其中SchoolModel.Store => 是你的Model名稱 + 【.Store】。看你的EDMX,透過模型瀏覽器會發現View、SP、Function都在【.Store】。AvgStudentGrade => 是你DB中的Function名稱。
1: [EdmFunction("SchoolModel.Store", "AvgStudentGrade")]
2: public static decimal? AvgStudentGrade(int studentId)
3: {
4: throw new NotSupportedException("Direct calls are not supported.");
5: }
如此就可以透過Linq語法直接使用DB中的Function。