Entity Framework с таблицами 6NF

#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:

Учитывая отсутствие ответа на этот вопрос, я собираюсь предположить, что это невозможно.