实体框架拯救儿童

时间:2014-03-04 03:02:07

标签: entity-framework

我们最近决定在我们的一个项目中首先使用EF6代码,因此我正在进行范式更改。我真的很喜欢EF,但有些东西是如此不同,他们似乎错了。

我只是想让社区运行一个场景,看看我是否正确思考。

我们有一个拥有相同类型的子实体的实体。

如果我正在保存一个孩子,我只会保存一个新的实体,其父ID设置为父ID。在实体世界中,它们通过以下相同类型的导航属性连接:

public class SomeType
{
public id;
....

public virtual IList<SomeType> Children
}

显然标准方法在这里不起作用,因为我没有手动操作数据库外键。

似乎“实体方式”首先使用DBCcontext和linq来选择父级,然后将新实体添加到Children列表中并保存整个内容。

这很好且合乎逻辑 - 但每次我进行保存时,选择选择似乎效率都不高。

我真的在这里缺少一些东西吗?我只需要习惯一种不同的思维方式吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

如果我的问题正确,那么您可以并且应该将孩子保存为带有parentId的简单Sometype,就像不使用实体框架一样。 EF的自动化不应该对你造成任何问题,你也不会破坏任何最佳实践。

基本上:如果父实体已经加载到上下文中,通常最好将新实体添加到导航属性集合(在您的情况下为Children,但是任何外键)。如果未加载父级并且您知道它是id,则填充外键字段并像往常一样保存它。