首页 > 解决方案 > Entity Framework Core:查询对象后加载相关数据

问题描述

很清楚如何查询一个实体并包含所有相关日期;例如:

using (var context = new BloggingContext())
{
    var blogs = context.Blogs
        .Include(blog => blog.Posts)
        .Include(blog => blog.Owner)
        .ToList();
}

参考

我的问题是,给定一个缺少一些相关数据的实体,我如何要求 EF 从数据库中获取其相关数据?

例如:

var blog = context.Blogs.Find(1); // get the blog with ID=1

// how can I do something like:
blog.Include(x => x.Posts);

标签: c#entity-frameworkasp.net-core.net-core

解决方案


正如微软所说,Find()方法的 retun dataType 是TEntity.

public virtual TEntity Find (params object[] keyValues);

这意味着该Find()方法命中数据库并将获取一个TEntity. 所以你不能在方法之后扩展你的查询Find()。因此,如果您想在此查询中获取相关数据,您必须Include()在访问数据库的任何方法之前调用。如下查询:

var blog = context.Blogs.Include(x => x.Posts).SingleOrDefault(x => x.Id == 1);

作为结论,您期望的方式Includ()是不可能的,但是如果您必须@GertArnold按照评论中的说明这样做,您可以按照这种方式进行。

祝你好运。


推荐阅读