Вопрос

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

Схема БД:UserGroupLabelSpreads таблица, содержащая поля с обнуляемым значением "userId", "groupId" и "labelId" с некоторыми дополнительными общими полями.

Объекты DAL:- UserGroupLabelSpread абстрактный класс.- UserSpread с дискриминатором, имеющим только ненулевой идентификатор пользователя.- GroupSpread с дискриминатором, имеющим только ненулевой groupId.- LabelSpread с дискриминатором, имеющим только ненулевой labelId.

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

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

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

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

Это было полезно?

Решение

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top