如果您的模型中存在一对多关系,则 EF 代码首先将默认启用级联删除约定。所以你真的不需要做任何特别的事情,但是让我们考虑一个你想要覆盖约定并关闭级联删除的场景。这就是今天早些时候随EF CTP5一起提供的 Fluent API 完成的方式:
public class Customer
{
public int CustomerId { get; set; }
public virtual ICollection<Order> Orders { get; set; }
}
public class Order
{
public int OrderId { get; set; }
public int CustomerId { get; set; }
public virtual Customer Customer { get; set; }
}
public class StackoverflowContext : DbContext
{
public DbSet<Customer> Customers { get; set; }
public DbSet<Order> Orders { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Customer>()
.HasMany(c => c.Orders)
.WithRequired(o => o.Customer)
.HasForeignKey(o => o.CustomerId)
.WillCascadeOnDelete(false);
}
}