Необнуляемые поля в наследовании таблиц - EDM - PullRequest
0 голосов
/ 04 декабря 2009

Я только что прочитал эту прекрасную статью , которая научила меня, как использовать наследование (таблица на иерархию).

Мне было интересно, скажем, у меня есть столбец 'HireDate', который нужно использовать в подклассе. Это точно, что в БД он должен быть помечен как обнуляемый, но как я могу пометить его как обнуляемый в EDM? Я попытался установить его как ненулевое значение, но затем он говорит, что ему нужно значение по умолчанию, и я хочу, чтобы значением по умолчанию было DateTime.Now, а не постоянное значение.

1 Ответ

0 голосов
/ 04 декабря 2009

Если свойство (например, HireData) объявлено в производном типе, и вы используете TPH, вы обязательно должны пометить его как необнуляемое в EDM, несмотря на тот факт, что оно обнуляется в базе данных.

На самом деле эта способность является одной из характеристик TPH .

...

Итак, я посмотрел на сообщение в блоге, о котором идет речь, и заметил, что у него есть проблема, поскольку он представляет столбец дискриминатора (PersonCategory) как свойство базовой сущности, которая, если позволено, делает изменяемой тип сущности так как вы можете легко сделать это:

student.PersonCategory = 2;

Что бы сделать ученика администратором! И это НЕ допускается EF.

Так что, если вы внимательно следите этому примеру, это может стать вашей проблемой.

Столбец, содержащий дискриминатор, не должен быть сопоставлен со свойством в EDM, он должен использоваться только в сопоставлении (т. Е. «Добавить условие» в разделе «Сопоставление с XXX» в окне сопоставления).

Решение проблемы в блоге: удалите свойство PersonCategory из класса Person.

В любом случае, я надеюсь, что это поможет

Alex

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