我在C#中使用實體框架從SQL腳本中生成了一些函數。但是,我需要爲這些函數指定不同的返回類型。實體框架導入函數返回類型不被更新
這兩個函數都返回ObjectResult類型,但我需要將其切換爲表生成的自定義數據類型(例如,將其從ObjectResult更改爲User)。
目前,我在Visual Studio中打開.edmx文件,右鍵單擊並選擇「模型瀏覽器」。然後,我在「功能導入」下找到我的功能,突出顯示並在屬性窗口中編輯返回類型。我通過單擊返回類型旁邊的「...」按鈕並將「返回集合」值更改爲實體 - >用戶來完成此操作。我點擊確定,但該功能仍然返回以前的類型。
在Model.Context.cs中查找函數,我發現代碼沒有改變。下面是生成的函數:
public virtual ObjectResult<User> AddUser(string login, string consoleName, string ip, MergeOption mergeOption)
{
var loginParameter = login != null ?
new ObjectParameter("Login", login) :
new ObjectParameter("Login", typeof(string));
var consoleNameParameter = consoleName != null ?
new ObjectParameter("ConsoleName", consoleName) :
new ObjectParameter("ConsoleName", typeof(string));
var ipParameter = ip != null ?
new ObjectParameter("Ip", ip) :
new ObjectParameter("Ip", typeof(string));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<User>("AddUser", mergeOption, loginParameter, consoleNameParameter, ipParameter);
我試着從「ObjectResult」到「用戶」手動更改返回類型,但這會導致在回油管的錯誤。由於返回行正在調用存儲過程,我不確定要將其更改爲何以保持過程調用正常工作,但返回的類型不同。
UPDATE:
代替不在線找到答案的,我現在正在努力手動編輯功能。改變在函數定義的返回類型很簡單:
public virtual LogFile AddFile(string name, Nullable<System.DateTimeOffset> recordedDate, string build, Nullable<long> userId, MergeOption mergeOption)
然而,這當然需要回線一併修改,從返回行包含存儲過程的實際調用,我我不確定我應該怎樣改變它。
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<LogFile>("AddFile", mergeOption, nameParameter, recordedDateParameter, buildParameter, userIdParameter);
我認爲代碼*做了*更改。它默認應該是'ObjectResult'。你把它改成了'ObjectResult '。我不會篡改這個生成的代碼。與它一起生活並從應用程序代碼中的ObjectResult獲取'User'。 –
2014-12-15 21:42:54