Наследование - вставка записей только в специализированную таблицу - PullRequest
2 голосов
/ 27 января 2012

Моя базовая таблица уже имеет некоторый идентификатор регистра = 5. Как я могу добавить этот же идентификатор в специализированную таблицу?

Пример:

BaseTable
ID INT
Name Varchar(100)

DerivedTable
ID INT
Test BIT

Я вставляю некоторые значения в базутаблица

Context.BaseTable.Add(new BaseTable(){ Name = '123' });
Context.SaveChanges();

Идентификатор 5

Теперь я хочу добавить специализированные значения

Context.DerivedTable.Add(new DerivedTable(){ ID = 5, Test = 1 });
Context.SaveChanges();

Это не сработало, linqpad показывает мне, что sqlпытается создать новый регистр BaseTable.

Есть ли способ обойти это?

Tks

1 Ответ

2 голосов
/ 27 января 2012

Если он отображается как наследование ( EDMX TPT , Код первого TPT ), вы не должны вставляться в базовую таблицу отдельно (скорее всего, это должен быть абстрактный класс в вашей модели),Вы должны вставить только в производную таблицу, и EF будет обрабатывать вставку в обе сопоставленные таблицы:

Context.DerivedTable.Add(new DerivedTable(){ Name = "123", Test = 1 });
Context.SaveChanges();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...