【发布时间】:2011-12-18 07:05:10
【问题描述】:
在我的数据模型中,我有一个实体 Group 和另一个实体 GroupMember。一个Group 包含一个或多个GroupMembers,但一个GroupMember 只能同时包含一个Group。到目前为止没问题,在数据库中GroupMember 有一个指向Group id 的外键。但是现在我想让其中一个成员成为“默认”或“选定”成员。应该始终只有一个选定的成员,不多也不少。
我尝试在 Entity Framework 中对此进行建模,它具有一个 1-* 关联来建模组成员资格和一个 (0..1)-1 关系来保存Group 内选定的GroupMember 的一个实例。
但是现在我显然遇到了问题,当插入 Group 和 GroupMember 的实例时,我收到一个错误,即实体框架无法确定插入项目的顺序,因为 Group 需要有效的 GroupMember作为默认成员,但除非不引用现有的 Group 实体,否则无法插入 GroupMember。可以说是鸡蛋问题...
最简单的方法可能是选择建立其中一个关系,但这会消除我在正常数据库操作期间希望拥有的约束。理想情况下,实体框架应以任意顺序将数据插入数据库,并且数据库应仅在事务结束时检查约束违规。
另一种方法是将所选成员建模为 GroupMember 中的布尔属性“IsSelected”。但是我不确定如何仅使用实体框架设计器来确保同时只有一个选定的成员(我想尽量避免直接使用数据库)。
您能提供任何指导吗?处理此问题的首选方法是什么?谢谢!
【问题讨论】:
标签: c# .net database entity-framework database-design