c#,实体框架存储过程

时间:2013-08-06 16:07:56

标签: c# linq entity-framework

我正在使用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'

不确定如何解决此问题。

3 个答案:

答案 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();