2017-11-20 3 views
0

データベースでカスケード削除を行っていますが、冗長で低速であるため、この多対多リレーションシップのカスケード削除をEFにはしたくありません。EntityFramework多くのカスケード削除を防止する

public class ArtikliBojeEC : EntityTypeConfiguration<ArtikliBoje> 
{ 
    public ArtikliBojeEC() 
    { 
     this.HasMany(e => e.ArtikliVelicine).WithMany(e => e.ArtikliBoje) 
      .Map(m => m.ToTable("ArtikliBojeVelicine").MapLeftKey("ArtikliBojeId").MapRightKey("ArtikliVelicineId")); 
     this.Ignore(e => e.VezaNaVelicinu); 
    } 
} 

私も効果なしで、このOnModelCreatingを入れてみました、EFは、まだ多くのリンクテーブルにすべての多くは削除呼び出します

  modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>(); 
     modelBuilder.Conventions.Remove<ManyToManyCascadeDeleteConvention>(); 

答えて

0

は、あなたはこれを試したことがありますか?

foreach (var relationship in modelBuilder.Model.GetEntityTypes().SelectMany(e => e.GetForeignKeys())) 
{ 
    relationship.DeleteBehavior = DeleteBehavior.Restrict; 
} 
+0

私がしようとしようとしていたが、私のModelBuilderのは、モデルのプロパティを持っていません。たぶん私はいくつかの名前空間が欠けているでしょうか?私はEF 6.2.0を使用しています。 – Hove

+0

私はこれらの例が.NETコア用であると思います。私は.NET Frameworkを使用しています。 – Hove

+0

Fluent APIを使用しても構わない場合は、このリンクの紹介に従って回避することができます。http://www.entityframeworktutorial.net/code-first/cascade-delete-in-code-first.aspx –

関連する問題