引用约束(实体框架)

在实体数据模型 (EDM) 中,相关对象之间(例如在 SalesOrderHeaderSalesOrderDetail 对象之间)可能存在引用约束。这些约束在概念架构定义语言 (CSDL) 文件中指定。有关更多信息,请参见ReferentialConstraint 元素 (EntityContainer CSDL)

Note注意

对象服务不强制使用可以在 EDM 中表示的所有约束。例如,对象服务不对关系强制使用基数约束,在将对相关对象所做的更改保存到数据源时,这可能导致产生不一致的结果。请确保数据源强制使用所有关键模型约束。

当您使用具有约束关系的对象时,请记住以下要点:

  • 如果依赖(子)对象与父对象之间没有已定义的关系,则无法存在。

  • 当您创建新的子对象时,在调用 SaveChanges 之前,对象上下文或数据源中必须存在父对象。否则,将引发 InvalidOperationException

  • 使用 Add 方法可将子对象添加到父对象的 EntityCollection。可以从已经为关系定义的导航属性中,或者从父对象的 RelationshipManager 属性上的 GetRelatedEndGetRelatedCollection 方法中访问子对象集合。

  • 删除父对象也会删除约束关系中的所有子对象。此结果与启用关系的关联上的 CascadeDelete 属性相同。

  • 删除关系会删除子对象。这意味着调用 EntityCollection 上的 Remove 会同时标记关系和子对象以便进行删除。

  • 创建关系之后,只能通过以下过程更改它:

    1. 丢弃现有关系。

    2. 调用 SaveChanges

    3. 将持久子对象添加到新的父对象的 EntityCollection

另请参见

其他资源

使用对象(实体框架)