我是代码第一个实体框架的新手,并尝试解决可选关系。
我有以下型号
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);
}
有人能指出我正确的方向吗?
更新了代码以反映下面的建议,遗憾的是仍然没有运气。
答案 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个项目。默认情况下,您不必构建该集合。想想任何系列。您不必将任何项添加到该集合中即可存在。你也可以添加很多项目,然后将它们带走,这没关系。