0

多対多の関係を次のように定義しています。

    modelBuilder.Entity<GameSessionEntry>().
         HasMany(c => c.Users).
         WithMany(p => p.GameSessionEntries).
         Map(
          m =>
          {
              m.MapLeftKey("SessionId");
              m.MapRightKey("UserId");
              m.ToTable("UserSessions");
          });

ただし、私は取得し続けます:

プリンシパル キー列を特定できなかったため、列 'UserId' を持つテーブル 'UserSessions' の外部キーを作成できませんでした。AddForeignKey fluent API を使用して、外部キーを完全に指定します。

私はデータベース作業と EntityFramework 全般に不慣れです。何をするように求められますか?

4

3 に答える 3

1

それは左と右の繰り返しの混乱です。Slauma によるこの説明を参照してください。したがって、キー名を変更する必要があります。

  m.MapLeftKey("UserId");      // Property in the HasMany call
  m.MapRightKey("SessionId");  // Property in the WithMany call
于 2013-07-25T07:50:52.403 に答える
0

多対多の関係をいじる代わりに、弱いエンティティ セットに書き直す必要があります。

たとえば、この関係がある場合:

ここに画像の説明を入力

弱いエンティティ セットに再設計できます。

ここに画像の説明を入力

これにより、多対多の関係が解消され、同じデータを複数のテーブルに格納する必要がなくなります。

詳細については、http: //fileadmin.cs.lth.se/cs/Education/EDA216/lectures/dbtoh4.pdf スライド 87/360 から始まる「リレーショナル データ モデル」に関するレクチャー スライドをお読みください。

于 2013-07-25T07:59:23.407 に答える