Entity Framework - Ассоциация от производных сущностей - PullRequest
3 голосов
/ 07 июня 2009

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

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

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

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

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

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

Спасибо, Nir.

1 Ответ

2 голосов
/ 07 июня 2009

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

...