Я использую Linq для сущностей, применяющих таблицу для каждого типа . Это шло очень хорошо, до сих пор. У меня есть следующие настройки:
- Родительская таблица
- Детский стол (Наследует
от родителя)
- Большой Детский Стол
(Унаследовано от дочернего стола)
- Связывание таблицы (имеет внешний ключ, допускающий значение Nullable, к дочерней таблице)
Вот схема базы данных
После вышеприведенного видео я применил подход «Таблица по типу» к схеме по умолчанию, которую Linq для объектов создает при добавлении вышеупомянутых таблиц в модель.
Перед применением таблицы по типу:
После таблицы по типу:
Затем я скомпилировал проект и получил ошибку, которую вы видите на изображении выше. Чтобы исправить это, я перешел к отображению ссылки на внешний ключ и добавил поле childid, о котором стонало сообщение об ошибке.
Затем я перекомпилировал и получил еще одну ошибку:
Проблема с отображением фрагментов
в строках 147, 176: два объекта с
разные ключи отображаются на одно и то же
строка. Убедитесь, что эти два сопоставления
фрагменты не отображают две группы
сущности с перекрывающимися ключами к
та же группа строк.
Это точка, в которой я сейчас нахожусь. Проблема заключается в том, что ChildID на LinkingTable является Nullable. Если я установлю это как Не обнуляемое, я не получу вышеупомянутую ошибку.
Я сохранил базу данных и проект, использованный на предыдущих этапах, на sky drive .
Кто-нибудь знает, как исправить эту ошибку?
Dave
Вот фиксированный код (спасибо The Gecko)
До
<AssociationSetMapping Name="FK_LinkingTable_Child"
TypeName="TablePerTypeModel.FK_LinkingTable_Child"
StoreEntitySet="LinkingTable">
<EndProperty Name="Child">
<ScalarProperty Name="Id" ColumnName="ChildID" />
</EndProperty>
<EndProperty Name="LinkingTable">
<ScalarProperty Name="LinkTableID" ColumnName="LinkTableID" />
</EndProperty>
</AssociationSetMapping>
* После 1060 *
<AssociationSetMapping Name="FK_LinkingTable_Child"
TypeName="TablePerTypeModel.FK_LinkingTable_Child"
StoreEntitySet="LinkingTable">
<EndProperty Name="Child">
<ScalarProperty Name="Id" ColumnName="ChildID" />
</EndProperty>
<EndProperty Name="LinkingTable">
<ScalarProperty Name="LinkTableID" ColumnName="LinkTableID" />
</EndProperty>
<Condition ColumnName="ChildID" IsNull="false"/>
</AssociationSetMapping>