3

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

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'

不知道如何解决这个问题。

4

3 回答 3

5

这是因为 Entity Framework 不能保证您的存储过程将始终返回单行,因此将其放入只是一个可枚举的集合ObjectResult中。如果您总是期待一个结果,您可以使用来获取结果,或使用任何标准的可枚举方法,如、、等。db.GetParamAlerts().Single()GetParamAlerts_ResultFirst()FirstOrDefault()SingleOrDefault()

于 2013-08-06T16:10:27.860 回答
1

看起来你应该要么使用

PVT_Alert_Notification.GetParamAlerts_Result paramRslt = db.GetParamAlerts();

或者该方法返回错误的类型?你能把这个方法的代码灌进去吗?或者你正在收集

如果你有一个集合,你可以使用:

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

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

于 2013-08-06T16:10:21.970 回答
0

尝试先合并或最后合并

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

尝试使用演员表

  GetParamAlerts_Result paramRslt = db.GetParamAlerts().Cast<GetParamAlerts_Result>().ToList(); 
于 2013-08-06T16:12:10.093 回答