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


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

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

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

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

что приводит к:

теперь часть, о которой этот вопрос: если я добавлю две таблицы из существующей базы данных 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 54

8 ответов:

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

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

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

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

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

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

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

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

код затем скомпилирован, и я смог работать через сущности, используя var foreign = DBContext.Первичный.Сначала.)(Иностранные и т. д.

Стив

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

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

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

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

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

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

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

сделано.

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