我可能会想到这完全错误并且可以解释为什么我在谷歌上找不到答案,但是,您可以先在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
,并且在出现时不需要任何内容
添加到数据库中。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
?
答案 0 :(得分:0)
你可以使用像这样的流畅api来完成这个
modelBuilder.Entity<Item2>()
.HasOptional<Item1>(s => s.Item1 )
.WithMany(s => s.Item2List).WillCascadeOnDelete(false);
但是您需要编辑外键以允许像这样的
public int? Item1Id{get;set;}