以前都是在用 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...