Как добавить отношение «многие ко многим» в Entity Framework - PullRequest
1 голос
/ 18 апреля 2009

Я новичок. Я смог добавить новые объекты, где есть отношение один ко многим. У меня проблема (не знаю, как это сделать) при добавлении новой сущности, когда отношение использует «многие ко многим».

В моем EDM у меня есть:

  1. Оргам
    <Scalar Properties>
    а. Org_ID (поле идентификации)
    б. OrgName
    с. OrgDesc
    <Navigation Properties>
    Building_orgs_Relation

  2. Здания
    <Scalar Properties>
    a) Building_ID (поле идентификации)
    б) Building_Desc
    <Navigation Properties>
    Building_orgs_Relation

  3. Org_Building_Relation
    a) Building_org_ID (поле идентификации)
    б) Org_ID
    в) Building_ID
    <Navigation Properties>
    Строительство
    Org

Я хочу:

  • Вставить новые организации
  • Удалить существующую организацию
  • Перенести организацию в другое здание
  • Обновление Org

Кто-нибудь может предоставить пример того, как это сделать с помощью упомянутого EDM? VB код будет оценен.

1 Ответ

1 голос
/ 18 апреля 2009

Прямо сейчас, Entity Framework действительно ограничен с точки зрения того, с какими многими отношениями он может справиться. Единственное, что может распознать дизайнер Visual Studio - это таблица, состоящая только из двух столбцов, оба внешних ключа для двух других таблиц, и где первичный ключ является составным ключом на обоих внешних ключах.

Итак, если у вас есть контроль над схемой базы данных, вы могли бы изменить таблицу Org_Building_Relation, чтобы удалить столбец Building_org_ID и сделать первичный ключ составным ключом для Org_ID и Building_ID. Если вы сделаете это, то при сопоставлении таблиц Entity Framework распознает это как отношение «многие ко многим».

Если вы не можете этого сделать (например, у вас нет контроля над схемой базы данных), вам необходимо убедиться, что единственные поля, которые вы отображаете в своем EDMX, - это поля, которые относятся к другим таблицы, и что вы не сопоставить первичный ключ. Это сложно, поскольку мастер сопоставления будет отбрасывать и заново создавать сопоставление хранилища при каждом обновлении.

Другой вариант - не использовать «правильное» отображение «многие ко многим» в Entity Framework, а вместо этого просто рассматривать отношение как другую сущность, а не включать его в отношение.

Не могу вспомнить, было ли это улучшено в предстоящем .NET 4.0.

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