新聞中心
LINQ調(diào)用存儲過程實現(xiàn)起來一點都不容易,就像其它的存儲過程一樣,需要很強的邏輯性與實用性。

創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比喀左網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式喀左網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋喀左地區(qū)。費用合理售后完善,十年實體公司更值得信賴。
LINQ調(diào)用存儲過程時出現(xiàn)的問題被customer問了多次了,我想問題雖小,但可能對大家有幫助,就順便寫下來和大家分享。
問題是這樣的,在LINQ調(diào)用存儲過程時,很多customer不知道怎么去接受返回的結(jié)果集。所以很多人就這樣做了,當(dāng)然,看起來是能理解的:
- SampleDataContext test = new SampleDataContext();
- IEnumerable retVal = test.sp(); // error here!
但是在編譯時就會出錯,報一個類型轉(zhuǎn)換的錯誤。其實在LINQ調(diào)用存儲過程時,LINQ調(diào)用存儲過程會自動為返回的結(jié)果集生成一個類型,類型的名字是由 SP名+"Result" 組成。
如SP名是sp,那么生成的類型就是 spResult。而調(diào)用SP時所返回的結(jié)果集就是 ISingleResult 。至于為什么會報類型轉(zhuǎn)換錯誤呢,很簡單,ISingleResult 和IEnumerable 不能互轉(zhuǎn)。
現(xiàn)在大家應(yīng)該知道該怎么做了吧?Try下如下代碼:
- SampleDataContext test = new SampleDataContext();
- ISinlgeResult retValue = test.sp();
- foreach(spResult value in retValue)
- {
- string field = value.field;
- }
知道了怎么做還遠(yuǎn)遠(yuǎn)不夠,建議大家去看看LINQ調(diào)用存儲過程自動生成的代碼。如果有這樣的習(xí)慣,相信大家很容易就能自己解決問題了。不過LINQ-SQL還有個小bug,如SingleResult所暗示的一樣,它還不能為我們生成MultipleResults,如SP中含有兩條Select語句時。
本文名稱:LINQ調(diào)用存儲過程的實現(xiàn)方法
新聞來源:http://m.fisionsoft.com.cn/article/dhieedh.html


咨詢
建站咨詢
