實體框架允許輕鬆地將存儲過程的結果映射到實體。我需要的是一個實體映射到輸入參數,以便不用實體框架功能導入:輸入參數映射
context.SaveUser(user.FirstName, user.LastName, ...);
我可以簡單地這樣稱呼它:
context.SaveUser(user);
我真正想要的是儘可能多的隔離可能的模式改變如我所能。我只使用EF來生成實體和函數導入;整個與DB的交互都是通過函數調用來完成的。所以,無論何時用戶表更改,我想在可視化設計器中重新生成用戶實體,並根據需要更改業務邏輯代碼;我不想更改數據訪問層。目前,我沒有看到從數據訪問層到EF的那些屬性集依賴調用(就像我上面發佈的那個),這是一個恥辱,因爲這些可以很容易地與實體類一起重新生成。
有沒有其他策略可以讓我達到同樣的效果?我使用這些存儲過程的原因實際上是因爲我想完全控制SQL(也許我只是偏執狂,但它有點可怕,最終得到一堆LINQ代碼,很少或根本沒有辦法控制實際SQL)。
這樣的事情可能嗎?
謝謝
這就是我本來打算做的,但事情是,爲了插入,更新或刪除您需要首先從上下文中獲取它的實體。沒有選擇操作要映射到存儲過程,並且我的用戶對數據庫沒有「選擇」權限。這種想法混淆了整個想法... – tokaplan 2010-08-29 13:31:14
爲什麼你認爲你首先必須從上下文中獲取實體? – 2010-08-29 13:35:51
好吧,也許不是每一次,但大多數時候 - 除非我創建一個新的實體,當然。典型的場景是從數據庫獲取一個實體,用它做一些事情,也許將其保存回去。每次嘗試從數據庫獲取實體時,EF都會嘗試生成SQL查詢,而且看起來沒有辦法使其調用存儲過程。我不需要EF爲我做所有JOIN,如果必須的話,我會在SP內部完成。 – tokaplan 2010-08-29 13:52:34