【发布时间】:2011-12-01 21:03:14
【问题描述】:
假设我有一个实体 Parent 和一个实体 Child,这样 Parent 就有一个虚拟的 ICollection Children 属性。在数据库中,这是从子表到父表的简单外键。
现在假设我在 Parent 上有一个名为 Text 的标量字符串属性。在Text属性的set方法中,我想访问Children集合属性中的实例。
当 EF 4.1 从 db 重构 Parent 实体时(例如由于 ToList() 调用),它会调用 Text 属性的 set 方法,而且它似乎总是在填充 Children 集合之前这样做。
有没有办法告诉 EF 在对 Text 标量字符串属性调用 set 之前先对 Children 虚拟集合属性调用 set?
【问题讨论】:
-
您的属性设置器(设置
Text属性和设置子集合)的行为取决于您调用它们的顺序-x.Text = "a"; x.Children = someChildren;给出的结果不同于x.Children = someChildren; x.Text = "a";,无论您是否手动执行或者如果 EF 在对象实现期间执行此操作。不知何故,我对这样的属性设置器有一种不好的感觉。我会考虑重写这段代码。我不认为你可以影响 EF 中实体实现的内部实现。