#entity-framework #entity-framework-4
#сущность-фреймворк #entity-framework-4 #entity-framework
Вопрос:
В моей модели у меня есть две таблицы с соотношением 1: 0 .. 1 между ними:
(Имена примеров для простоты)
Event
----------
EventId (int; PK)
StartDate (date)
EndDate (date)
EventTime
---------
EventId (int; PK, FK)
StartTime (time)
EndTime (time)
(Поскольку это 6NF, ни один из этих столбцов не обнуляется)
В моем edmx я пытаюсь сопоставить эти две таблицы в единый объект, где StartTime
и EndTime
имеют значение null для объекта, но не в базе данных. Хотя это не совсем соответствует тому, что возможно в базе данных (базе данных потребовались бы либо допустимые значения как для начального, так и для конечного времени, либо никакого значения ни для того, ни для другого), я надеялся, что EF примет решение о том, должна ли EventTime
строка существовать в зависимости от того, были ли для объекта установлены значения StartTime
и EndTime
, и выдаст исключение, если было установлено только одно.
Не похоже, что это возможно, по крайней мере, как я это настроил. Я добавил два скалярных свойства к Event
классу и сопоставил их с EventTime
таблицей. Сопоставление было создано успешно, но при попытке скомпилировать мои предварительно скомпилированные представления я получаю следующую ошибку компилятора:
Error 108 Running transformation: Problem in mapping fragments starting at line 0:Non-nullable column EventTime.EndTime in table EventTime is mapped to a nullable entity property.
Очевидно, что я могу работать с EventTime
сущностью как с отдельной сущностью (какой она на самом деле является в базе данных), но я надеялся упростить API surface, сделав это таким образом. Возможно ли то, к чему я стремлюсь?
Ответ №1:
Учитывая отсутствие ответа на этот вопрос, я собираюсь предположить, что это невозможно.