EntityFramework Code-First:如何在多对多关系的一侧防止级联删除?

时间:2014-10-09 08:16:17

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

是否可以使用Entity Framework Code-First从单一方式防止级联删除。

以下是示例代码:

public sealed class ZeContext : DbContext
{
    static ZeContext()
    {
        Database.SetInitializer(new CreateDatabase());
    }

    public IDbSet<A> As { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<A>()
            .ToTable("A")
            .HasMany<B>(a => a.Bs)
            .WithMany(b => b.As)
            ;

        modelBuilder.Entity<B>()
            .ToTable("B")
            .HasMany<A>(b => b.As)
            .WithMany(a => a.Bs)
            ;

        base.OnModelCreating(modelBuilder);
    }
}

public class A
{
    public Guid Id { get; set; }
    public virtual ICollection<B> Bs { get; set; }
}

public class B
{
    public Guid Id { get; set; }
    public virtual ICollection<A> As { get; set; }
}

我想配置以下行为:

  1. 从表A中删除记录时,应从EntityFramework创建的内部多对多表中删除相应的关联记录。
  2. 但是,当从表B中删除记录时,如果内部多对多表中存在相应的关联记录,则该记录将失败。

0 个答案:

没有答案
相关问题