我正在使用Entity Framework。 我有以下内容:
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'
不确定如何解决此问题。
答案 0 :(得分:4)
这是因为实体框架无法保证您的存储过程始终返回单行,因此将其放入ObjectResult
is just an enumerable collection。如果您总是希望获得单个结果,则可以使用db.GetParamAlerts().Single()
将结果设为GetParamAlerts_Result
,或使用任何标准可枚举方法,例如First()
,FirstOrDefault()
, SingleOrDefault()
等等。
答案 1 :(得分:0)
看起来你应 使用
PVT_Alert_Notification.GetParamAlerts_Result paramRslt = db.GetParamAlerts();
或方法返回错误的类型?你可以为方法编写代码吗?或者您正在获得集合?
如果你有一个集合,你可以使用:
var result = db.GetParamAlerts();
return result.FirstOrDefault();
您会看到类似的帖子here
答案 2 :(得分:0)
尝试在结尾处加入第一个或默认
GetParamAlerts_Result paramRslt = db.GetParamAlerts().FirstOrDefault();
尝试使用演员
GetParamAlerts_Result paramRslt = db.GetParamAlerts().Cast<GetParamAlerts_Result>().ToList();