EF4; Добавить внешние ключи к модели - PullRequest
3 голосов
/ 22 ноября 2010

У меня довольно большая модель Entity Framework 4 (сначала модель), которая на данный момент имеет все отношения, определенные как ассоциации, без свойств внешнего ключа.

Кто-нибудь знает способ добавить свойства FK ко всей диаграмме, кроме как воссоздать диаграмму с нуля или добавить каждое из них вручную?

Полагаю, одним из способов было бы сгенерировать базу данных, затем построить новую модель из базы данных, а затем просто выполнить очистку, если нет лучших предложений?

Я думаю, что другим способом было бы написать что-то для настройки XML.

Ответы [ 2 ]

0 голосов
/ 05 ноября 2012

Вот шаги, которые я предпринял:

  1. Добавьте скалярное свойство правильного типа зависимой сущности (например, "CategoryID" в "Product")
  2. Сопоставьте это свойство сПравильный столбец в базе данных с помощью окна Mapping в конструкторе
  3. Отредактируйте ассоциацию, вам нужно будет добавить ссылочное ограничение в ассоциацию.Вы можете сделать это через окно свойств.Принципалом будет объект, на который вы ссылаетесь (т. Е. «Категория»), а зависимым будет другой (т. Е. «Продукт»)
  4. Это все, что необходимо.Когда вы «проверяете» этот файл, вы получите сообщение об ошибке в EF с жалобой на существующее сопоставление набора ассоциаций.Это потому, что сейчас есть две стратегии для этого отображения.Вам нужно будет удалить этот.Единственный способ найти это - открыть файл XML.VS выделит эту область волнистыми попугайчиками.Просто удалите этот узел, и все готово.
0 голосов
/ 22 ноября 2010

Хотя написание некоторого кода для манипулирования XML позволит достичь того, что вам нужно, если только вы не собираетесь использовать его в будущем (маловероятно), я думаю, вам лучше сделать это вручную в конструкторе. Сказав, что если у вас есть время, чтобы сделать это, вы найдете отличный способ изучить внутреннюю работу Entity Frameworks DSL. Что-то, что по моему опыту полезно, когда вы приходите вносить изменения в модель после запуска схемы.

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