[英]Entity framework - Delete cascade
创建DbContext时,我希望数据库中的所有表都启用delete-cascade。 可能吗?
我和FK有两张桌子。 这些课程是
public class Child
{
public int ChildID { get; set; }
public string Name { get; set; }
public virtual Parent parent { get; set; }
}
public class Parent
{
public int ParentID { get; set; }
public string Name {get;set;}
}
public class iMyContext : DbContext
{
public iMyContext(string connectionString)
: base(connectionString)
{
}
public virtual DbSet<Child> Children { get; set; }
public virtual DbSet<Parent> Parents { get; set; }
}
On creating my context, I get tables as
Parents with columns
ParentID PK
Name
Children with columns
ChildID PK
Name
Parent FK
现在,当我添加
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Child>()
.HasOptional(r => r.Parent)
.WithRequired(ad => ad.) // problem here
.WillCascadeOnDelete();
}
WithRequired子句没有子级。 我该如何解决?
可以使用OnModelCreating方法中的FluentAPI设置级联删除:
modelBuilder.Entity<Root>()
.HasMany(r => r.Nodes)
.WithRequired(n => n.Root)
.WillCascadeOnDelete();
UPD:假设您有两个实体Root和Node,它们使用DataAnnotations属性以一对多关系连接:
public class Root
{
[Key]
public int RootId { get; set; }
public string RootName { get; set; }
[InverseProperty("Root")]
public ICollection<Node> Nodes { get; set; }
}
public class Node
{
[Key]
public int NodeId { get; set; }
public string NodeName { get; set; }
[ForeignKey("Root")]
public int RootId { get; set; }
public Root Root { get; set; }
}
现在,如果要在删除所有节点时删除它们所依赖的根,则需要使用上下文配置类的OnModelCreating方法中的FluenAPI使用UPD之前在上面介绍的代码来配置此节点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.