EF重新加载参考

本文关键字:加载 参考 新加载 EF | 更新日期: 2023-09-27 18:28:43

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

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

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

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

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

EF重新加载参考

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

该网站解释了加载的急切与懒惰:http://msdn.microsoft.com/en-us/data/jj574232.aspx

您可以通过在repo中使用.Include()来指定要带回的引用(适用于不需要所有内容的长链)。

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

或者,您可以指定使用热切加载的上下文,并在检索时带回所有内容。

context.LazyLoadingEnabled = false;