Почему при использовании наследования TPH значения по умолчанию игнорируются? - PullRequest
1 голос
/ 11 января 2012
CREATE TABLE Lodging
(
     LodgingID int PRIMARY KEY IDENTITY,
     LodgingName nvarchar(100),
     Resort bit NOT NULL,
     ResortChainOwner nvarchar(100) NOT NULL,
         ...
)

Lodging Таблица БД отображается на Lodging сущность. Затем я реализовал наследование TPH:

• С Lodging сущностью, являющейся базой

• Я создал новую сущность Resort, которая происходит от Lodging.

• Я переместил свойство ResortChainOwner для конкретного курорта в тип сущности Resort и также установил (в SSDL) ResortChainOwner's Значение по умолчанию "notApplicable"

• Столбец таблицы размещения Resort является дискриминационным. Если столбец Resort содержит 0, то записи материализуются в сущность Lodging, а если столбец содержит 1, то запись материализуется в Resort сущность

Когда в следующем коде вызывается SaveChanges, EF должен предоставить (для команды вставки) значение по умолчанию для поля ResortChainOwner, но вместо этого он предоставляет Null

        var lodging = new Lodging();
        ...
        context.Lodgings.AddObject(lodging);
        context.SaveChanges();

Так как же на вставках заставить EF предоставлять значение по умолчанию для столбца ResortChainOwner?

Спасибо

Ответы [ 2 ]

0 голосов
/ 24 января 2012

Попробуйте установить для своей сущности Lodging абстрагирование и создать вторую сущность, производную от Lodging. У меня такое чувство, что TPH работает только с классами, которые на самом деле наследуются от класса, содержащего поле дискриминатора.

0 голосов
/ 23 января 2012

Вы определили значение по умолчанию для класса Resort, но создали экземпляр суперкласса "Жилье".Поэтому вместо этого используйте:

var lodging = new Resort();

Базовый класс "Жилье" даже не имеет этого свойства, если я вас хорошо понимаю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...