Имейте Entity Framework игнорировать производные типы - PullRequest
6 голосов
/ 01 июня 2011

в моем текущем проекте я использую код первый подход.

У меня есть тип с именем Task, который является частью модели. У меня также есть BackgroundTask от Task и UserAccountTask от BackgroundTask.

Когда я просто пытаюсь создать объект типа Task и добавить его в свой репозиторий задач, я получаю DbUpdateException, как только я пытаюсь сохранить изменения в БД. Его внутреннее исключение гласит:

"Неверное имя столбца 'UserAccount_UserId'. \ R \ nНеверное имя столбца 'UserAccount_Lastname'. \ R \ nНеверное имя столбца 'UserAccount_Firstname'. \ R \ nНеверное имя столбца 'UserAccount_Fullname'. \ R \ nНеверное имя столбца 'UserAccount_ . \ r \ nНеверное имя столбца 'UserAccount_Title' [...] "

UserAccount - это другой тип и свойство UserAccountTask (UserId, Lastname и т. Д. Являются свойствами UserAccount).

Надеюсь, мое описание проблемы не слишком запутано: - / Я просто хочу, чтобы EF проигнорировал тот факт, что Task является базовым классом для какого-то другого типа, потому что ИМХО это не имеет значения в то время.

Заранее спасибо, Кевин

1 Ответ

17 голосов
/ 01 июня 2011

Попробуйте использовать это в производном контексте:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);
    modelBuilder.Ignore<UserAccountTask>();
    modelBuilder.Ignore<BackgroundTask>();
}
...