尝试创建现有PHP / MySql库应用程序的MVC应用程序。我无法获得最基本的工作,我觉得自己像个白痴。
我定义了以下类:
Book
上课:
public class Book
{
public int BookID { get; set; }
public string BookName { get; set; }
public int? SeriesID { get; set; }
public int GenreID { get; set; }
public Genre Genre { get; set; }
etc
}
Genre
上课:
public class Genre
{
public int GenreID { get; set; }
public string GenreName { get; set; }
public virtual ICollection<Book> Books { get; set; }
}
当我运行它时,我看到每个创建的书籍对象都有一个Genre对象,但它是null,并且不会填充类型的数据。
书类中的GenreId
是外键
有谁能告诉我我做错了什么?
答案 0 :(得分:0)
Book上的类型属性应该是虚拟的。如果它不是虚拟的,那么只检索Books的普通查询将始终将Genre留空。使其成为虚拟允许实体框架创建一个动态代理类,继承自Book,它实现了Genre属性的getter,其代码用于发出查询以填充并从数据库返回Genre。
你已经将Genre的书籍集合虚拟化,这样就可以作为一个懒惰的提取属性了。
延迟加载的替代方法是在查询中使用.Include以包含Genre属性。