一則Entity Framework 學習中的問題

2022-03-14 03:22:33 字數 2288 閱讀 9653

以前都是在用 linq2sql來作 orm 的,但最微軟對 linq2sql 不再作公升級,但又因為 entity framework 和 linq2sql 有很多的相似之處,也就作一下學習。

體會下 ef 大體上和 linq 差不多,基本的增刪改等 操作都相似。在功能是執行效率上 ef要好於linq 但有個地方不如 linq2sql 了,在linq2sql 中儲存過程是直接對映成方法的,但ef中就沒那麼方便了。

自己寫了個儲存過程:

getnewbillcode

目地是為了生成訂單號,

如 od-001-2011-04-06-001

但在操作中 怎麼 new 也 出來這個儲存過程來。 原因在於ef對 儲存過程支援的不是很好。

所以要自己通方法來實現儲存過程。

該儲存過程有三個引數和乙個還回值引數

shopid:部門

billdate:訂單日期

masttablename:表名稱

out billcode:還回訂單編碼

自己寫個方法來實現它

1:  

public

string getnewbillcodebydate(int shipid,string billdate,string masttablename,out

string billcode)

2:          ,
7:  

//訂單日期

8:  

new system.data.entityclient.entityparameter,

9:  

//表名稱

10:  

new system.data.entityclient.entityparameter,

11:  

//訂單編碼

12:  

new system.data.entityclient.entityparameter

13:
14:              };
15:
16:              executefunction("getnewbillcodebydate", pars);
17:  

return billcode= pars[3].value.tostring();

18:          }

1:  

//執行儲存過程

2:  

public

void executefunction(string functionname, system.data.entityclient.entityparameter parameters)

3:
16:  

catch (system.exception)

17:
20:  

finally

21:
24:          }
上網copy 了些 高手們的**,雖然**是有了,但執行的時候卻還是出錯了

最後google 了下

在一篇文章裡找到了答案

摘錄了他的最後一名話 問題成功解決

總結:如果不使用最後select結果的話,則不必理會返回型別,將返回型別設定為「無」即可,當然我們封裝的函式可以獲取儲存過程return結果及output型別的引數。所以上面例子**可以刪除儲存過程中的return前的select語句,同時新增函式匯入時指定返回型別為「無」。

補充:雖然我們從資料庫來生成 ef模型時 ,可以把 儲存過程 託過去,但這時 還不能用它

就比如,它匯入的 儲存過程 是在 「儲存過程」 中的,而不是在 「函式匯入」 中的

這是我們要作的是 新增 函式匯入  型別為「無」

Excel 應用一則

那就開始做事吧 是想讓它完成這樣乙個功能 計算兩個日期之差.我一開始就在想是不是應該用它提供的函式來解決呢 後來發現沒有提供這個函式.並且這時我連怎麼取函式的引數位置都不清楚,慢慢來,看下別人做的.我先試了一下now 函式,哈哈.成功.太爽了,接下來就是找函式 發現這個函式 datedif star...

seq妙用一則

haoren im sj01 server01 gongsi seq f 201110 02g 1 26 20111001 20111002 20111003 20111004 20111005 20111006 20111007 20111008 20111009 20111010 2011101...

JPQL CASE WHEN 寫法一則

其實也沒什麼特別的,就是jpa2中,jpql的解析還是有硬傷啊,害得我摸索了好一陣子。請看 public static final string hql find transaction amount select new foo.bar.service.report.tax.transaction...