EF代码优先:如何在删除时创建1:多(单向)关系级联

时间:2012-03-07 19:33:07

标签: entity-framework entity-framework-4.1 ef-code-first code-first

这是我的模特:

public  class User
{
    public int     UserId { get; set; }
    public virtual ICollection<Shipment> Shipments { get; set; }
}
public class Shipment
{
    public int ShipmentId { get; set; }
    public int UserId {get; set;} 
}

任何用户可能有0~多次发货。我想级联相应的货件并在我删除用户时自动删除它们。 我不希望通过制作虚拟用户属性[Requierd]从另一侧制作关系BiDirrectional.and eneable DeleteOnCascade。 感谢。

1 个答案:

答案 0 :(得分:2)

您可以通过覆盖“OnModelCreating”来实现上述目标。

public class DataContext : DbContext
{
    public DbSet<User> Users { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<User>().HasMany(u => u.Shipments).WithOptional().WillCascadeOnDelete(true);
        base.OnModelCreating(modelBuilder);
    }
}