2014-10-18 51 views
0

尝试制作现有PHP/MySql库应用程序的MVC应用程序。我无法获得最基本的工作,而且我觉得自己像个白痴。类中的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; } 
} 

当我运行此我看到创建的每本书对象都有一个类别对象,但它是空的,并且流派的数据没有被填充。

的书中类GenreId是一个外键

谁能告诉我什么,我做错了什么?

+0

“书类中的GenreId是一个外键”在你的数据库中是这样吗? – tmg 2014-10-18 06:34:10

+0

它最初不会,我在开始使用MVC时添加了它 – MackTheKnife 2014-10-18 06:38:29

回答

0

书上的流派属性应该是虚拟的。如果它不是虚拟的,那么只是检索书籍的简单查询将始终使体裁保持空白。使它变为虚拟允许Entity Framework创建一个动态代理类,继承自Book,它实现了Genre属性的getter,并使用代码发出查询以从数据库填充并返回Genre。

您已经将Genre的书籍集合变为虚拟,因此已经可以作为懒读取属性。

延迟加载的替代方法是在查询中使用.Include以包含流派属性。