Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EF 6数据库第一个存储过程_C#_Entity Framework - Fatal编程技术网

C# EF 6数据库第一个存储过程

C# EF 6数据库第一个存储过程,c#,entity-framework,C#,Entity Framework,当首先使用EF6数据库并尝试执行存储过程时,自动生成的上下文会添加所需的方法,但会将返回类型设置为ObjectResult。例如,以下定义: public virtual ObjectResult<USP_GetItemDetails_Result> USP_GetItemDetails(int? itemNbr, int? siteNbr) public虚拟对象结果USP\u GetItemDetails(int?itemNbr,int?siteNbr) 返回类型为: retu

当首先使用EF6数据库并尝试执行存储过程时,自动生成的上下文会添加所需的方法,但会将返回类型设置为ObjectResult。例如,以下定义:

public virtual ObjectResult<USP_GetItemDetails_Result> USP_GetItemDetails(int? itemNbr, int? siteNbr)
public虚拟对象结果USP\u GetItemDetails(int?itemNbr,int?siteNbr)
返回类型为:

return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<USP_GetItemDetails_Result>("USP_GetItemDetails", itemNbr, siteNbr);
返回((IObjectContextAdapter)this).ObjectContext.ExecuteFunction(“USP_GetItemDetails”,itemNbr,siteNbr);

是否要将此结果具体化为具体类,而不必将结果作为ObjectResult发送?我的堆栈中的下一层不知道实体框架。

证明了引擎盖下的ObjectResult是一个IEnumerable。简单的toList意味着我可以将IEnumerable返回到下一层

另外,如果存储过程的返回类型与数据库实体不匹配,则返回类型为复杂类型(它是来自链接服务器的一些本地信息和数据的合并)为什么不自己将结果映射到一个新类中呢?我可以这样做,但稍后我会通过web API将结果作为dto返回时再次映射。您可以使用Automapper