Entity framework EF codefirst:如何在删除时生成1:MUNICE(单向)关系级联

Entity framework EF codefirst:如何在删除时生成1:MUNICE(单向)关系级联,entity-framework,entity-framework-4.1,ef-code-first,code-first,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;} } 公共类用户

这是我的模型:

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;} 
}
公共类用户
{
public int UserId{get;set;}
公共虚拟ICollection装运{get;set;}
}
公共舱位装运
{
public int ShipmentId{get;set;}
public int UserId{get;set;}
}
任何用户都可能有0到多个装运。我希望在删除用户时将对应的装运级联并自动删除它们。 我不想通过使虚拟用户属性[required]来使关系成为双向的,并且从另一方进行了不可逆的删除。
谢谢。

您可以通过覆盖“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);
    }
}
公共类DataContext:DbContext
{
公共数据库集用户{get;set;}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Entity().HasMany(u=>u.Shippings)。with optional().WillCascadeOnDelete(true);
基于模型创建(modelBuilder);
}
}

@RossCyrus您能否更详细地解释一下,当您实现上述解决方案时,会发生什么情况,因为它应该是有效的。