Реализация идентификации отношений с EF4

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

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

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

2 ответа

Решение

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

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

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

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

Другие вопросы по тегам