[英]EF code first, one to (zero or many)?
我可能认为这完全错了,可以解释为什么我在谷歌上找不到答案但是,你能先在EF代码中找到一对(零或多)关系吗?
例
public class Item1
{
public int Id {get;set;}
public virtual ICollection<Item2> Item2List {get;set;}
}
public class Item2
{
public int Id {get;set;}
public int Item1Id {get;set;}
public virtual Item1 Item1 {get;set;}
}
所以从上面我希望规则是这样的。
Item1
可以有多个或零Item2
,并且在添加到数据库时不需要任何Item2
。 Item1
,则它会级联到Item2List
任何内容。 Item2
需要1个Item1
。 Item2
,则它不会影响Item1
。 编辑:
运行上面创建的迁移是这样的
CreateTable(
"dbo.Item1",
c => new
{
Id = c.Int(nullable: false, identity: true),
})
.PrimaryKey(t => t.Id);
CreateTable(
"dbo.Item2",
c => new
{
Id = c.Int(nullable: false, identity: true),
Item1Id = c.Int(nullable: false),
})
.PrimaryKey(t => t.Id)
.ForeignKey("dbo.Item1", t => t.Item1Id, cascadeDelete: true)
.Index(t => t.Item1Id);
再次,这可能是我的误解但是.ForeignKey("dbo.Item1", t => t.Item1Id, cascadeDelete: true)
意味着当你删除Item2
删除Item1
也是如此? 或者我错了,这是否意味着,当Item1
被删除然后删除Item2
?
你可以使用流畅的api这样做
modelBuilder.Entity<Item2>()
.HasOptional<Item1>(s => s.Item1 )
.WithMany(s => s.Item2List).WillCascadeOnDelete(false);
但您需要编辑外键以允许这样的null
public int? Item1Id{get;set;}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.