繁体   English   中英

实体框架存储过程

[英]c# , Entity Framework Stored Procedure

我正在使用实体框架。 我有以下内容:

var db = new LikEntities();

GetParamAlerts_Result paramRslt = db.GetParamAlerts();

GetParamAlerts是一个存储过程,它是类型

System.Data.Objects.ObjectResult<GetParamAlerts_Result>

请注意,GetParamAlerts返回多行。

当我运行上面的代码时,出现以下错误消息:

无法隐式转换类型:

'System.Data.Objects.ObjectResult'到'PVT_Alert_Notification.GetParamAlerts_Result'

不确定如何解决此问题。

这是因为Entity Framework无法保证您的存储过程将始终返回单行,因此将其存储在ObjectResult ,该对象只是一个可枚举的collection 如果始终希望得到一个结果,则可以使用db.GetParamAlerts().Single()作为GetParamAlerts_Result获得结果,或者使用任何标准的可枚举方法,例如First()FirstOrDefault()SingleOrDefault() ,等等

它看起来像您应该使用

PVT_Alert_Notification.GetParamAlerts_Result paramRslt = db.GetParamAlerts();

还是方法返回错误的类型? 您可以为该方法添加代码吗? 还是您正在收藏

如果您有收藏,则可以使用:

var result = db.GetParamAlerts();
return result.FirstOrDefault();

您会在这里看到类似的帖子

尝试在末尾加入第一个或默认值

 GetParamAlerts_Result paramRslt = db.GetParamAlerts().FirstOrDefault();

尝试使用演员表

  GetParamAlerts_Result paramRslt = db.GetParamAlerts().Cast<GetParamAlerts_Result>().ToList(); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM