2

Я создал базу данных, используя Entity Framework 5 из модели. В этой модели есть таблица под названием «Человек», а другая - «Администратор». «Администратор» наследует «Человек».MVC4 Entity Framework - не может неявно конвертировать

  • «Лицо» имеет идентификатор и имя.
  • «Администратор» имеет код.

Использование MVC4 при создании нового контроллера для «Администратора». Когда я создаю контроллер & просмотров автоматически это ошибка:

Ошибка 2 - Невозможно неявно преобразовать тип 'Model.Person' в 'Model.Administrator'. Явное преобразование существует (вам не хватает роли?).

ОШИБКА КОД (между звездочками):

public ActionResult Details(int id = 0) 
    { 
     **Administrator admin = db.Person.Single(u => u.Id == id);** 
     if (admin == null) 
     { 
      return HttpNotFound(); 
     } 
     return View(admin); 
    } 

ответ

5
Administrator a = db.Person.OfType<Administrator>().Single(u => u.Id == id); 

Используйте метод OfType<>() фильтра, который возвращает только объекты, которые могут быть поданы к этому типу. Или в качестве альтернативы явно бросать объект.

Administrator a = db.Person.Single(u => u.Id == id) as Administrator; 

Оба эти решения будут работать.

+0

Yo нужно сделать это вручную над автоматически сгенерированными файлами ??? –

+0

@RobertPlant, я не знаком с автогенерированными файлами и могу ли вы настроить их для учетной записи, например, для наследования. –

0

'Administrator' inherits from 'Person'"

это означает 'Администратор' является 'лицо', но 'лицо' не может быть 'Администратор'

вы можете иметь

Person p = new Administrator(); 

но

Administrator a = new Person(); 

не подходит, и вам нужно сделать отливку.

1

Даже в MVC 5.1 генерация эшафот не знает, как обрабатывать унаследованные типы. Вы должны использовать метод OfType <>() для фильтрации по типу объекта, например, bmused.

Кроме того, вам нужно использовать метод расширения SingleOrDefault(), чтобы иметь возможность вернуть null, если нет записей. Если вы просто используете Single(), и нет записей, будет выбрано исключение.

Смежные вопросы