Подтвердить что ты не робот

Как обрабатывать ObjectResult в Entity Framework 4

В Entity Framework 4 у меня возникает проблема, когда я использую импорт функции в хранимую процедуру, а затем использую ее как скалярное значение. Он генерирует следующий код:

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

Как использовать возвращаемое значение этого метода?

Например, этот код отлично работает:

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

Но я хочу использовать возвращаемые значения только как int. Если я использую возвращаемое значение как non while в функции import, оно дает -1 в качестве вывода.

Когда я пробую код ниже:

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

Он выдает сообщение об ошибке:

Невозможно неявно преобразовать тип 'System.Data.Objects.ObjectResult' в 'int'

Как разобрать выше?

4b9b3361

Ответ 1

Обратите внимание, что тип возврата GetTopEmployee - это ObjectResult<Nullable<int>>. ObjectResult<T> реализует IEnumerable<T>, поэтому ваш метод способен возвращать более одного Nullable<int>.

Я предполагаю, что вы пытаетесь получить форму Id для сотрудника. Если вы абсолютно уверены, что получите только один результат, вы можете использовать следующий код для получения этого идентификатора.

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

topId может быть нулевым. Вам нужно будет использовать topId.Value или var result = topId ?? -1;, чтобы получить результат int.

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