Как правильно установить связь между двумя объектами в Entity Framework 4 Entitydesigner? - PullRequest
54 голосов
/ 13 сентября 2010

Для нового проекта я сначала пытаюсь создать свои бизнес-классы, а потом создать реальные таблицы базы данных.Поэтому я использую Entity Framework 4 Designer.A создал новый файл «Модель данных сущностей ADO.Net» с расширением .edmx.

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

Я хочу добавить 1 кСвязь между продуктом -> группа.Если бы я сначала создал базу данных MSSQL, я бы добавил столбец IDGroup в Table Product и сослался на 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.

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

Ответы [ 8 ]

85 голосов
/ 13 сентября 2010

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

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

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

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

9 голосов
/ 29 марта 2012

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

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

6 голосов
/ 09 мая 2011

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

Решением было двойное нажатие на строку ассоциации, которая вызывает диалоговое окно Референтное противоречие.Затем я установил поле «Основное» в качестве таблицы с первичным ключом, а «Зависимый» - в качестве таблицы с внешним ключом, в раскрывающемся списке установил имена внешних ключей, и щелкнул «ОК».и я смог работать с объектами, используя var foreign = DBContext.Primary.First (). Foreign и т. д.

Стив

3 голосов
/ 05 мая 2011

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

0 голосов
/ 26 января 2017

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

0 голосов
/ 18 ноября 2016

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

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

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

Готово.

0 голосов
/ 04 апреля 2016

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

0 голосов
/ 05 декабря 2013

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...