2016-03-06 58 views
0

包含的內容我有這樣EF忽略了選擇

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; } 
} 

數據結構,當我嘗試從數據庫取回一些數據,我用下面的結構

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)在這種情況下被忽略? 以及如何解決這個問題?

+2

有時當EF被突起元件,如果'.Include()'不是最後一個語句,其他一些語句將會阻止include包起作用(這是我的經驗)。 –

回答

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();