Подтвердить что ты не робот

Как правильно установить связь между двумя объектами в Entity Framework 4 Entitydesigner?

Для нового проекта я сначала создаю свои бизнес-классы и создаю реальные таблицы базы данных позже. Поэтому я использую конструктор Entity Framework 4. Создан новый файл модели данных ADO.Net Entity Data с расширением .edmx.

Я создал две сущности:
alt text

Я хочу добавить отношение 1 к nc между Product → Group. Если бы я сначала создал базу данных MSSQL, я бы добавил столбцовую группу IDG к продукту таблицы и ссылался на Product.IDGroup на Group.IDGroup. Насколько я могу судить, я не могу добавить такую ​​ассоциацию в конструктор, если я добавлю новое свойство IDGroup в объект продукта

Вот как я добавляю отображение: alt text

В результате:
alt text

Теперь о том, в чем состоит этот вопрос: если я добавлю две таблицы из существующей базы данных MSSQL в файл edmx, я получу ошибку компиляции:

Error 3027: No mapping specified for the following EntitySet/AssociationSet - GroupSet, ProductSet

Что означает эта ошибка и что я должен сделать, чтобы исправить это? Если я удалю эти две таблицы, вместо этого я получу предупреждение:

Error 2062: No mapping specified for instances of the EntitySet and AssociationSet in the EntityContainer myContainer.

Что-то мне подсказывает, я делаю все это неправильно, и это просто базовый материал. Как я могу сделать это правильно?

4b9b3361

Ответ 1

Я просто наткнулся на это сам, и когда я с ним разобрался (я ответил на ваш вопрос).

Мне удалось дважды щелкнуть по строке (линии ассоциации) в дизайнере. Заполните свойства там, и я получил его работу.

Мне также пришлось закрыть VS и повторно открыть его, чтобы некоторые из сообщений об ошибках исчезли...

Не могу сказать, что это правильный ответ - просто возиться и, похоже, получить результаты.

Ответ 2

Что-то, что легко пропустить, это Создать базу данных из модели. Насколько я понимаю, это нужно запускать после каждого изменения, внесенного в базу данных .edmx.

Эта простая ошибка произошла со мной и привела к разочарованию в течение нескольких минут =)

Ответ 3

Я получил эту ошибку, когда я сгенерировал модель из базы данных с помощью ADO.Net DBContext Generator под VS2010 SP1 с установленным EF4.1. База данных, которую я использовал, не имела никакой ссылочной целостности между полями первичного и внешнего ключей.

Решение состояло в том, чтобы дважды щелкнуть по линии ассоциации, которая вызывает диалоговое окно Referential Contstrainst. Затем я устанавливаю поле Principal как таблицу с первичным ключом, Dependent как таблицу с внешним ключом, задает имена внешних ключей в раскрывающемся списке и нажимает OK.

Затем скомпилированный код, и я смог работать с объектами, используя var foreign = DBContext.Primary.First(). Foreign и т.д.

Стив

Ответ 4

У меня была такая же ошибка, и один бит конфигурации, который диалоговое окно "Добавить ассоциацию" не помогло мне установить, было свойством "Ссылочное ограничение". Как только я настроил это, я перестроил решение, и все было круто.

Ответ 5

У меня была эта ошибка, когда я удалил ассоциацию из диаграммы модели, но связь остается в базовом XML в .edmx. Они только, как я нашел, исправить это, чтобы вручную редактировать edmx, чтобы удалить ссылки на нарушающую ассоциацию.

Ответ 6

Все, что вам нужно сделать, это удалить все ваши таблицы из файла edmx. Теперь щелкните правой кнопкой мыши в файле edmx и выберите опцию базы данных формы обновления. Update Ef, проблема будет решена.

Ответ 7

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

что было вызывает проблема моего коллеги, удалила одну из таблицы из базы данных и забыла обновить модель.

Мое решение находит удаленный объект на диаграмме. (браузер модели может быть полезен.) Затем удалите его из диаграммы, поскольку EF не удаляет сущности, если вы удалили таблицу из базы данных.

Построить и проверить окно списка ошибок (Ctrl + E, W).

Готово.

Ответ 8

Я также обнаружил, что восстановление вашего проекта после изменений в контексте Entity Framework, и модели иногда могут разрешать эти ошибки, особенно если контексты Entity Framework находятся в другом проекте.