如何在Entity Framework 4中处理ObjectResult

时间:2012-03-11 11:01:09

标签: c# entity-framework-4

在Entity Framework 4中,当我将函数import用于存储过程然后用作标量值时,我遇到了问题。它生成以下代码:

public virtual ObjectResult<Nullable<int>> GetTopEmployee()
{
    return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<Nullable<int>("GetTopEmployee");
}

如何使用此方法的返回值?

例如,此代码可以正常工作:

NorthwindEntities db = new NorthwindEntities();
var i = db.GetTopEmployee();

但是我想仅将返回值用作int。如果我在函数import中使用返回值为非,则将-1作为输出。

当我尝试以下代码时:

NorthwindEntities db2 = new NorthwindEntities();
int j = db.GetTopEmployee();

它抛出错误说:

  

无法将类型'System.Data.Objects.ObjectResult'隐式转换为'int'

如何解析上述内容?

1 个答案:

答案 0 :(得分:80)

请注意,GetTopEmployee的返回类型是ObjectResult<Nullable<int>>ObjectResult<T>实施IEnumerable<T>,因此您的方法可以返回多个Nullable<int>

我假设您正在尝试为员工获取某种形式的身份证明。如果您完全确定只获得一个结果,则可以使用以下代码来获取该ID。

  var topId = db.GetTopEmployee().FirstOrDefault();

topId可能为null。您必须使用topId.Valuevar result = topId ?? -1;来获得int结果。

  NorthwindEntities db = new NorthwindEntities();
  int j = db.GetTopEmployee().FirstOrDefault() ?? -1;