我构建了一组通过EF7映射到现有数据库的简单模型。
这是两个模型的一个例子:
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Book> Books { get; set; }
}
public class Book
{
public int Id { get; set; }
public string Title { get; set; }
public int PersonId { get; set; }
public virtual Person Person { get; set; }
}
但是,当我尝试从数据库中检索模型时(例如获取特定的书籍),所有数据都会正确返回,除了&#34; Person&#34;仍然无效,无论如何,我似乎无法获得这些数据。我检查了数据库,两个表之间存在外键关系。
我正在使用此方法来检索我的对象。
public async Task<T> FindAsync<T>(Expression<Func<T, bool>> match)
where T : class
{
return await context.Set<T>().SingleOrDefaultAsync(match);
}
有趣的是,当我创建一个迁移并使用它来创建我自己的测试数据库(使用LocalDB)时,一切看起来都很好,我觉得很奇怪。
有没有人知道为什么我的对象没有填充?
答案 0 :(得分:0)
这应该有效:
return await context.Books.Include(b => b.Person).SingleOrDefaultAsync(match); // book.Person will be loaded
更新:
预先加载是查询一种类型实体的过程 还会将相关实体作为查询的一部分加载。渴望加载 通过使用Include方法实现。 more info