EF重新加载引用

时间:2013-08-22 16:17:09

标签: c# entity-framework

我正在向上下文中添加新实体,并且我希望在完成添加后填充其所有引用集合。问题是,我从add()期间创建的上下文中读取相同的实体,基本上EF不会转到DB。这是正确的行为,但我该如何解决呢?

    Repo().Add(newEntity);
    Repo().Reload(newEntity);  

这会从DB重新加载实体但是我没有得到引用(FK关系)。我已经找到了如何加载引用,但是我需要一种通用的方法来加载任何实体的所有引用。

var entry = Context.Entry(entity);
entry.Reference("ReferenceName").Load();

以上是正确的方法还是有其他方法?

1 个答案:

答案 0 :(得分:1)

如果没有看到您的存储库代码,我猜这是一个懒惰的加载问题。

此网站解释了渴望与延迟加载:http://msdn.microsoft.com/en-us/data/jj574232.aspx

您可以使用回购中的.Include()指定您想要带回的确切引用(适用于您不需要所有内容的长链)。

context.Set<whateverType>.Include(t => t.(whatever you are referencing)).Where(t => t.id = id);

或者您可以指定上下文以使用预先加载并将所有内容与您的检索结合起来。

context.LazyLoadingEnabled = false;