2011-05-21 62 views
3

我很努力在EF中使用Code First创建一个简单的一对多关系。我希望它为我生成数据库,但无法弄清楚如何编写这些类,以便创建它。如何使用Code First和Data Annotations在Entity Framework 4.1中创建一对多关系?

我有这些类:

public class Book 
{ 
    public int ID { get; set; } 
    public string Author { get; set; } 
    public ICollection<Page> Pages { get; set; } 
} 

public class Page 
{ [Key] 
    public int BookID { get; set; } 

    public Book Book { get; set; } 

    public string OtherField { get; set; } 
} 

,但我得到的错误,而它关系生成数据库:

无法确定类型“MvcApplication1.Models之间的关联的主要终点。页面'和'MvcApplication1.Models.Book'。此关联的主端必须使用任一的关系流利API或数据注解

明确配置

只想生成两个简单的表中,“书”与ID作为主键,页用的BookID作为主和外键。它确实应该很简单,但我无法弄清楚。

回答

3

但这不是一对多的关系。这是一对一的关系,说每本书只有一页。错误表示无法确定书或页面是否为一对一关系中的主体。

您必须修改您的实体是这样的:

public class Book 
{ 
    public int ID { get; set; } 
    public string Author { get; set; } 
    public virtual ICollection<Page> Pages { get; set; } 
} 

public class Page 
{ 
    public int ID { get; set; } 
    public int BookID { get; set; } 
    public virtual Book Book { get; set; } 
    public string OtherField { get; set; } 
} 
+0

,使你变懒加载您还可以虚拟修饰符添加到页面和书属性。 – 2011-05-21 21:45:34

+0

@Peri:好点我更新了答案。 – 2011-05-21 21:47:33

+0

,但它会生成主键为“ID”和外键为“BookID”的Pages表。我怎样才能让它生成只有主键**和**外键的'BookId'。 – 2011-05-21 21:53:55

相关问题