我在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