Реализация идентификации отношений с EF4 - PullRequest
2 голосов
/ 14 сентября 2010

Я сейчас нахожусь в ситуации, когда мне нужно удалить сущности, не имея доступа к связанной ObjectContext.Я читал об идентификации отношений, и они, кажется, как раз то, что мне нужно: я хочу удалить объект, когда на него больше не ссылается его «родительский» объект.

Я использую Visual Studio 2010 Premium для генерациимоя база данных из файла edmx.Насколько я понимаю, мне нужно включить внешний ключ моего «родительского» объекта в первичный ключ моей «дочерней» таблицы объектов.Однако я не могу найти способ заставить Visual Studio сделать это.

Может кто-нибудь помочь мне с этим?Я полностью на неверном пути или просто где-то пропускаю настройку?

Ответы [ 2 ]

2 голосов
/ 15 сентября 2010

Я наконец понял:

Перейдите к объекту Child и создайте скалярное свойство ParentId. Установите это свойство в качестве ключа объекта (сделав его первичным ключом вместе со свойством Id вашего объекта Child). Затем перейдите к вашим отношениям ParentChild и добавьте ссылочное ограничение. Основным фактором ограничения является ваш Родитель, а Зависимым является ваш Ребенок. Зависимое свойство должно быть свойством, которое вы только что создали для вашего Child (то есть ParentId). Сохрани все, и все готово.

В основном это описывается как "сценарий 2" в этом сообщении в блоге: http://mocella.blogspot.com/2010/01/entity-framework-v4-object-graph.html

0 голосов
/ 15 сентября 2010

Нет, вы на правильном пути. Что вам нужно сделать, так это в конструкторе EDM, после создания ваших 2 сущностей (родительского и дочернего), щелкните правой кнопкой мыши на родительском объекте и выберите Add => Association ..., затем укажите имена свойств Multiplicity и Navigation и нажмите Ok. Вы увидите, что VS создает ассоциацию между ними, что приведет к взаимосвязи между этими двумя таблицами позже, когда вы создадите базу данных из вашей модели.
не создайте свойство, подобное ParentID, в вашей дочерней сущности, так как оно будет автоматически создано дизайнером после создания ассоциации.
Кроме того, вы можете щелкнуть правой кнопкой мыши по ассоциации в конструкторе EDM и выбрать «Свойства» и выбрать «Каскад» в опции «End2 OnDelete», чтобы дочерний элемент был удален при удалении родительского элемента.

...