实体框架代码首先是可选的ICollection关系

时间:2015-11-12 01:58:08

标签: entity-framework

我是代码第一个实体框架的新手,并尝试解决可选关系。

我有以下型号

public class Customer
{
    public int Id { get; set; }
    public int? CardId { get; set; }    
    public virtual ICollection<Card> Cards { get; set; }
    .......
}

public class Card
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int CustomerId { get; set; }
    public virtual Customer Customer { get; set; }
    .......

}

客户可能没有任何卡,因此关系必须是可选的,卡必须有客户。

我尝试了以下内容,但该集合不包含客户的定义。

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    //modelBuilder.Entity<Customer>()
    //.HasOptional(lu => lu.Cards)
    //.WithRequired(pi => pi.Customer);
}

有人能指出我正确的方向吗?

更新了代码以反映下面的建议,遗憾的是仍然没有运气。

1 个答案:

答案 0 :(得分:2)

您尝试做的似乎只是建立一对多关系。

在您的卡片模型中,您需要包含:

public int CustomerId { get; set; }  // Setting up a foreign key.

使用此设置,Customer类将不需要:

public int? CardId { get; set; } // not necessary anymore

使用一对多关系,ICollection<Card> Cards会自动允许0个项目。默认情况下,您不必构建该集合。想想任何系列。您不必将任何项添加到该集合中即可存在。你也可以添加很多项目,然后将它们带走,这没关系。