Поделиться через


Ссылочные ограничения (платформа Entity Framework)

В модели EDM ссылочные ограничения могут существовать между связанными объектами, например между объектами SalesOrderHeader и SalesOrderDetail. Эти ограничения указаны в файле на языке CSDL. Дополнительные сведения см. в разделе Элемент ReferentialConstraint (EntityContainer, язык CSDL).

NoteПримечание.

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

При работе с объектами, имеющими ограничения на связи, помните о следующих особенностях:

  • Зависимые (дочерние) объекты не могут существовать без связи с родительским объектом.

  • При создании нового дочернего объекта родительский объект должен существовать в контексте объекта или источнике данных перед вызовом метода SaveChanges. В противном случае возникнет исключение InvalidOperationException.

  • Используйте метод Add, чтобы добавить дочерние объекты к родительскому объекту EntityCollection. Коллекция дочерних объектов доступна из свойства навигации, определенного для связи, или из методов GetRelatedEnd и GetRelatedCollection свойства RelationshipManager родительского объекта.

  • Удаление родительского объекта приводит к удалению всех дочерних объектов в связи, к которой применяется ограничение. Результат этого действия такой же, как включение свойства CascadeDelete ассоциации для связи.

  • При удалении связи удаляется и дочерний объект. Это значит, что при вызове метода Remove для коллекции EntityCollection связь и дочерний объект помечаются для удаления.

  • После создания связи изменить ее можно только с помощью следующих действий.

    1. Удалите существующую связь.

    2. Вызовите метод SaveChanges.

    3. Добавьте сохраненный дочерний объект к коллекции EntityCollection нового родительского объекта.

См. также

Другие ресурсы

Работа с объектами (платформа Entity Framework)