Дизайнер Entity в VS 2008 просто сломан? - PullRequest
1 голос
/ 26 июля 2010

Я работал в L2E с 3 простыми таблицами, цели которых довольно просты: Users, Users_Roles, Roles.

У пользователей была связь 1: много с Users_Roles, на которую ссылается столбец UserID (уникальный идентификатор),В то время Роли не имели никакого отношения к каким-либо таблицам.Я привел все 3 таблицы в конструктор, который отражал отображение Users в Users_Roles, а Roles располагался сам по себе.

Реализация ролей должна быть сопоставлена ​​с Users_Roles в отношениях многие: многие, я перешел в студию управления,Я добавил отношения от Roles к Users_Roles и сохранил его.Затем я вернулся к VS и сделал логический следующий логический шаг - попытался обновить модель Entity, щелкнув правой кнопкой мыши «Обновить модель из базы данных».Он показал все три таблицы в своем списке обновлений.После обновления визуальные отношения не изменились.Я попытался перекомпилировать, чтобы увидеть, были ли внесены какие-либо изменения, но получил две ошибки, отличающиеся только номерами строк:

Error 3 Error 3034: Problem in Mapping Fragments starting at lines 177, 192: 
                    Two entities with possibly different keys are mapped to the 
                    same row. Ensure these two mapping fragments map both ends 
                    of the AssociationSet to the corresponding columns.

C:*\Model1.edmx 178 15  MVCTestApp

Попытался отладить ошибку безрезультатно.В конце концов расстроился, удалил модель и перестроил ее.Отношения были признаны, дизайнер был обновлен должным образом, жизнь была хорошей.

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

Итак, несколько вопросов:

1) это поведение ограничено VS 2008?Вскоре у меня будет 2010 год, и я надеюсь, что конструктор функционирует, как и ожидалось,

2), есть ли другие инструменты, которые могут заменить встроенный конструктор, который действительно работает,

3)Есть ли способ сделать обновление из модели фактически обновленным - возможно, какой-то трюк, о котором я не знаю, кроме удаления всей модели, таким образом теряя все мои другие отношения, которые я установил вручную?

1 Ответ

0 голосов
/ 26 июля 2010

Сломанный?Правильнее будет сказать, что он распознает только определенные шаблоны схем БД.

EF поддерживает другие шаблоны, но вам нужно написать EDMX самостоятельно.Если вы хотите, чтобы GUI Designer сделал все правильно, вам нужно следовать шаблонам, которые он ускоряет.

Если Users_Roles имеет только два столбца, UserId и RoleId и если они оба являются FK для соответствующих таблиц, и если два столбца вместе представляют собой PK таблицы, , тогда отображение таблицы получится без каких-либо усилий с вашей стороны.

В противном случае вам необходимо изучить формат EDMX и правильно составить карту.Как вы обнаружили, это сложнее.

...