EF忽略选择中的包含属性

时间:2016-03-06 17:30:04

标签: c# .net entity-framework

我有这样的数据结构

public class Author
{
    ...
}

public class Comment
{
    public long Userid { get; set; }
    ...
}

public class Blog
{
    public Author Author { get; set; }

    public ICollection<Comment> Comments { get; set; }
}

当我尝试从DB中检索一些数据时,请使用以下构造

IRepository<Blog> blogsRepository = _repositoryFactory.Create<Blog>();
IQueryable<Blog> blogsQuery = blogsRepository.Query().Include(x => x.Author);
List<BlogsData> blogsData = blogsQuery.Select(x => new BlogsData
                                                        {
                                                            Blog = x,
                                                            Commented = x.Comments.Any(z => z.Userid == userId)
                                                        }).ToList();

其中BlogsData

public class BlogsData
{
    public Blog Blog { get; set; }

    public bool Commented { get; set; }
}

但是,在将所有数据提取到List<BlogsData>之后,Blog.Author属性为null

我不明白,为什么在这种情况下会忽略Include(x => x.Author)? 以及如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

美好的一天,我在EF的经历是你还需要在选择

中添加它

中添加作者
public class BlogsData
{
    public Author Author { get; set; }

    public Blog Blog { get; set; }

    public bool Commented { get; set; }
}

并将其添加到

List<BlogsData> blogsData = blogsQuery.Select(x => new BlogsData
                                                    {
                                                        Author x.Author,
                                                        Blog = x,
                                                        Commented = x.Comments.Any(z => z.Userid == userId)
                                                    }).ToList();