Я использую Linq для сущностей, применяющих подход Таблица по типу. До сих пор все шло очень хорошо. У меня следующая установка:
Вот диаграмма базы данных

Следуя приведенному выше видео, я применил подход «Таблица по типу» к схеме по умолчанию, которую Linq to entity создает, когда вы добавляете указанные выше таблицы в модель.
Перед применением таблицы по типу:

После таблицы по типу:

Затем я скомпилировал проект и получил ошибку, которую вы видите на изображении выше. Чтобы исправить это, я перешел к сопоставлению для ссылки внешнего ключа, я добавил поле childid, о котором стонало сообщение об ошибке.

Затем я перекомпилировал и получил еще одну ошибку:
Problem in Mapping Fragments starting at lines 147, 176: Two entities with different keys are mapped to the same row. Ensure these two mapping fragments do not map two groups of entities with overlapping keys to the same group of rows.
Это то, в чем я сейчас нахожусь. Проблема заключается в том, что "ChildID" в "LinkingTable" имеет значение Nullable. Если я установил для него значение Не допускающее значение NULL, я не получаю вышеуказанную ошибку.
Я сохранил базу данных и проект, использованные в вышеупомянутых шагах, в Небесный драйв.
Кто-нибудь знает, как исправить эту ошибку?
Дэйв
Вот исправленный код (спасибо 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>
После
<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>





Попробуйте обновить узел AssociationMapping в разделе Mapping вашего EDMX-файла, чтобы включить условие, разрешающее нули.
например
<AssociationSetMapping>
...
<Condition ColumnName = "" IsNull = "false"/>
</AssociationSetMapping>
блестяще ... это полностью работает .. Теперь это выглядит так: <Condition ColumnName = "ChildID" IsNull = "false" />