我正在寻找关于保持与实体框架保持一致的C#POCO之间的双向关系的最佳实践。
一个家庭有零到多个家庭成员,一个人总是有一个家庭。现在,当我实例化一个新的人和一个新的家庭时:
Person john = new Person();
Family adams = new Family();
然后,我将该人添加到家庭中,反之亦然。这需要:
adams.familyMembers.Add(john);
john.family = adams;
我想知道是否有更好的方法可以这样做,因为如果我将一个人添加到家庭中,则应始终将该人的家庭财产设置为该家庭。如果开发人员忘记执行此操作,则最终将得到孤立对象。
我是否使用完整的getter和setter来做到这一点?有一些自动的方法可以做到这一点吗?
使用实体框架存储这些对象时,有什么特别的注意事项吗?
提前致谢
最佳答案
不管您是否设置其他方向,实体框架都不会在意,它仍会正确保存。但是,在使用域模型时,您可能希望立即访问两个导航属性。这需要在执行操作时设置属性。我用于几乎所有导航集合的解决方案如下
public class Family
{
public Family()
{
this.FamilyMembers = new List<Person>();
}
public IEnumerable<Person> FamilyMembers {get; protected set;}
public void AddFamilyMember(Person person)
{
this.FamilyMembers.Add(person);
person.Family = this;
}
}
关于c# - 在双向关系和 Entity Framework 中保持完整性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17702841/