:テーブルには、次のフィールドを持つUserBadges名前を付ける必要がありますそれを多対多として直接マップすることはできません。あなたは、接合テーブルに追加フィールドを追加し、あなたがあなたの代わりにエンティティにごジャンクションテーブルを促進し、2つの1対多の関係を使用する必要があるアプリケーションでそのフィールドにアクセスする場合:
public class Badge {
...
public virtual ICollection<UserBadge> UserBadges { get; set; }
}
public class User {
...
public virtual ICollection<UserBadge> UserBadges { get; set; }
}
public class UserBadge {
public int UserId { get; set; }
public int BadgeId { get; set; }
public string B { get; set; }
public virtual Badge Badge { get; set; }
public virtual User User { get; set; }
}
デフォルトの規約をすべきFluent-APIまたはデータ注釈のいずれかで実行する必要があるUserBadge
テーブルのキーを除いて、マッピングを正しく定義してください。
modelBuilder.Entity<UserBadge>().HasKey(e => new { e.UserId, e.BadgeId });
Thxしかし、UserIdとBadgeIdを複合PKとして定義しているため、これが機能するかどうかは疑問です。同じUserIdとBadgeIdを持つ2つのレコードを持つことが可能でなければなりません.B値はそれの別個の値を作成します(別のテーブルへのFKです)。 –
@PatrickPeters:このような場合は、PKを別に定義する必要がありますが、回答のポイントは変わりません。接合テーブルをエンティティとして公開する必要があります。 –
はい、Ladislav、あなたはまったく正しいです。私はあなたの返事に応じてこれを修正し、それは動作します。 –