引用约束(实体框架)
在实体数据模型 (EDM) 中,相关对象之间(例如在 SalesOrderHeader 和 SalesOrderDetail 对象之间)可能存在引用约束。这些约束在概念架构定义语言 (CSDL) 文件中指定。有关更多信息,请参见ReferentialConstraint 元素 (EntityContainer CSDL)。
注意 |
---|
对象服务不强制使用可以在 EDM 中表示的所有约束。例如,对象服务不对关系强制使用基数约束,在将对相关对象所做的更改保存到数据源时,这可能导致产生不一致的结果。请确保数据源强制使用所有关键模型约束。 |
当您使用具有约束关系的对象时,请记住以下要点:
如果依赖(子)对象与父对象之间没有已定义的关系,则无法存在。
当您创建新的子对象时,在调用 SaveChanges 之前,对象上下文或数据源中必须存在父对象。否则,将引发 InvalidOperationException。
使用 Add 方法可将子对象添加到父对象的 EntityCollection。可以从已经为关系定义的导航属性中,或者从父对象的 RelationshipManager 属性上的 GetRelatedEnd 或 GetRelatedCollection 方法中访问子对象集合。
删除父对象也会删除约束关系中的所有子对象。此结果与启用关系的关联上的 CascadeDelete 属性相同。
删除关系会删除子对象。这意味着调用 EntityCollection 上的 Remove 会同时标记关系和子对象以便进行删除。
创建关系之后,只能通过以下过程更改它:
丢弃现有关系。
调用 SaveChanges。
将持久子对象添加到新的父对象的 EntityCollection。