Entity Framework - Ассоциация от производных сущностей

Я использую технику TPH (Таблица на иерархию) для сопоставления набора сущностей.

Схема БД: таблица UserGroupLabelSpreads, имеющая поля "UserId", "GroupId" и "LabelId" с некоторыми дополнительными общими полями.

Объекты DAL: - UserGroupLabelSpread абстрактный класс. - UserSpread с дискриминатором, имеющим только ненулевой UserId. - GroupSpread с дискриминатором, имеющим только ненулевой GroupId. - LabelSpread с дискриминатором, имеющим только ненулевой LabelId.

Мне удалось заставить эту штуку работать, но когда я пытаюсь подключить сущность UserSpread к существующей сущности "Пользователь", я получаю следующую ошибку: Ошибка 1 Ошибка 3034: Проблема в отображении фрагментов, начиная со строк 487, 554: Два объекта с разными ключами отображаются в одну строку. Убедитесь, что эти два фрагмента сопоставления не отображают две группы сущностей с перекрывающимися ключами в одну и ту же группу строк.

Я покопался, чтобы понять, что проблема в том, что я сопоставляю столбец UserId дважды: один раз для условия дискриминатора и второй для ассоциации.

Я прав с моим предположением? -Могу ли я заставить эту вещь работать?

Спасибо, Нир.

1 ответ

Решение

Существует обновленная версия EDM Generator, которая сможет вам помочь. Вы можете использовать его для создания, проверки и многое другое. Извините, получил неправильную ссылку. Вот тот, к v2. Я считаю, что у меня была эта проблема. Если я не ошибаюсь, это из-за того, что я неправильно сопоставил внешние ключи. Однако в то время я использовал бета-версию EF4, и некоторые сообщения были неправильными из-за прокси. Проверьте свои внешние ключи. Blog.Id ---> Blog_id был моей проблемой. У меня был Blog.Id -> Blog.Id, а затем BlogEntry.Id ----> Blog.Blog_Id, который, конечно, не работает, но дизайнер немного не прощает, когда дело доходит до сопоставления ключей.

Другие вопросы по тегам