C# 如何在实体框架4中处理ObjectResult
在EntityFramework4中,当我将函数导入存储过程,然后将其用作标量值时,我面临一个问题。它生成以下代码: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
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()
,或者换言之,如果希望在未返回结果时接收异常,请使用此选项。