Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在实体框架4中处理ObjectResult_C#_Entity Framework 4 - Fatal编程技术网

C# 如何在实体框架4中处理ObjectResult

C# 如何在实体框架4中处理ObjectResult,c#,entity-framework-4,C#,Entity Framework 4,在EntityFramework4中,当我将函数导入存储过程,然后将其用作标量值时,我面临一个问题。它生成以下代码: public virtual ObjectResult<Nullable<int>> GetTopEmployee() { return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<Nullable<int>("GetTopEmployee"); } N

在EntityFramework4中,当我将函数导入存储过程,然后将其用作标量值时,我面临一个问题。它生成以下代码:

public virtual ObjectResult<Nullable<int>> GetTopEmployee()
{
    return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<Nullable<int>("GetTopEmployee");
}
NorthwindEntities db2 = new NorthwindEntities();
int j = db.GetTopEmployee();
但我只想将返回值用作int。如果在函数导入时将返回值用作non,则会将-1作为输出

当我尝试以下代码时:

public virtual ObjectResult<Nullable<int>> GetTopEmployee()
{
    return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<Nullable<int>("GetTopEmployee");
}
NorthwindEntities db2 = new NorthwindEntities();
int j = db.GetTopEmployee();
它抛出一个错误,说:

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


如何解析上述内容?

请注意,
GetTopEmployee
的返回类型是一个
ObjectResult
ObjectResult
实现了
IEnumerable
,因此您的方法能够返回多个
Nullable


我想你是想为这个员工弄到某种形式的身份证。如果您绝对确定只会得到一个结果,那么可以使用以下代码来获得该Id

  var topId = db.GetTopEmployee().FirstOrDefault();
topId
可以为空。您必须使用
topId.Value
var result=topId-1;以获得整数结果

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

输出
-1
的代码是什么?我不理解“函数导入时返回值为non”。我的意思是,如果通过函数导入重新调整存储过程,然后将返回值标记为none,那么它将给我-1作为输出。如果您绝对确定要得到一个结果,则应使用
db.GetTopEmployee().First()
,或者换言之,如果希望在未返回结果时接收异常,请使用此选项。