C# EF 6数据库第一个存储过程
当首先使用EF6数据库并尝试执行存储过程时,自动生成的上下文会添加所需的方法,但会将返回类型设置为ObjectResult。例如,以下定义: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
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