2017-05-18 9 views
1
私は5月の関係の作業にこれは多く作るしようとしている

に多く、ここで私は私のエンティティの構成を以下しているスキーマエンティティフレームワークは、多くの間違ったテーブルマッピング

enter image description here

、最初ContentBranchエンティティです:

configuration.HasMany(e => e.ContentLeafs) 
      .WithMany(e => e.ContentBranches) 
      .Map(m => m.MapLeftKey("ContentLeafId").MapRightKey("ContentBranchId").ToTable("ContentBranchLeafs")); 

その後ContentLeafエンティティ:

configuration.HasMany(e => e.ContentBranches) 
      .WithMany(e => e.ContentLeafs) 
      .Map(e => e.MapLeftKey("ContentBranchId").MapRightKey("ContentLeafId").ToTable("ContentBranchLeafs")); 

私は、次のテストコードを実行しようとしている:

theBranch.ContentLeafs.Add(theLeaf); 
      await contentBranchRepository.Update(theBranch); 

私は次の例外を取得するので、問題は、私は推測するマッピングである:外部キーを公開しないエンティティを保存中にエラーが発生した

をそれらの関係のプロパティEntityEntriesプロパティは、単一のエンティティが例外のソースとして識別できないため、nullを返します。エンティティタイプに外部キーのプロパティを公開することで、保存時の例外処理を簡単に行うことができます。詳細については、InnerExceptionを参照してください。

内部例外:

無効なオブジェクト名 'dbo.ContentLeafContentBranches'。

私は明示的にテーブル名を提供していたときにEFが規則を使用している理由誰でも知っていますか?助けてください。

+0

私は私のコードでこれを持っており、それは hasManyの(S => s.ContentLeafs) .WithMany(C => c.ContentBranches) .MAP(CS => { cs.MapLeftKey(「ContentBranchId作業です"); cs.MapRightKey(" ContentLeafId "); cs.ToTable(" ContentBranchLeafs "); }); – ihisham

答えて

0

で今試してみてください。型の設定を自動的に登録する私のコードにはいくつかの問題があり、上記の両方の答えが正しい。

2

エンティティの設定でマッピングキーを切り替えるようにしてください。つまり、ContentLeafsのMapRightKeyを使用してMapLeftKeyを切り替えます。コンテンツブランチについても同じことができます。これは私にとってあなたの問題を解決しました。

+0

あなたの答えをありがとうが、私はすでにそれを試して、同じ例外を取得する – tomek

2

Fluent Apiでは片面のみを設定する必要があります。

は、それは私のせいでこれだけ

configuration.HasMany(e => e.ContentLeafs) 
      .WithMany(e => e.ContentBranches) 
      .Map(m => m.MapLeftKey("ContentLeafId").MapRightKey("ContentBranchId").ToTable("ContentBranchLeafs"));
+0

アイデアをありがとう、試してみましたが、それは私が行方不明、まだ同じ例外 – tomek

関連する問題