私は2つのエンティティを持っています。それぞれに他へのナビゲーション プロップがあるため、EF は m2m マッピング テーブルを自動的に作成します。私のクラスは Activity と Trip であるため、EF は ActivityTrip を作成して関係をマップします。これは素晴らしいことですが、
これらの関係レコードに追加のデータが必要なので、独自の m2m テーブルを提供し、流暢な API を使用して、自動生成されたテーブルではなく、このテーブルに関係をマップしたいと考えています。
ここに私のクラスがあります:
public class Activity
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Trip> Trips { get; set; }
}
public class Trip
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Activity> Activities { get; set; }
}
public class ActivityTrip //Want to use my own manytomany join table with extra fields
{
public int ActivityId { get; set; }
public int TripId { get; set; }
//Extra data
public string ActivityTripType { get; set; }
}
これが私の構成です:
public class ActivityConfiguration : EntityTypeConfiguration<Activity>
{
public ActivityConfiguration()
{
HasKey(p => p.Id);
HasMany(t => t.Trips)
.WithMany(a => a.Activities)
.Map(m =>
{
m.ToTable("ActivityTrip");
m.MapLeftKey("ActivityId");
m.MapRightKey("TripId");
});
}
}
public class TripConfiguration : EntityTypeConfiguration<Trip>
{
public TripConfiguration()
{
HasKey(p => p.Id);
}
}
public class ActivityTripConfiguration : EntityTypeConfiguration<ActivityTrip>
{
public ActivityTripConfiguration()
{
HasKey(p => new { p.ActivityId, p.TripId });
}
}
EF は、m2m 関係の FK を使用して、独自の ActivityTrip テーブルを引き続き生成します。次に、EF は、コード化された最初の ActivityTrip エンティティに対して、2 つの主キーと追加のフィールドを使用して別の ActivityTrip1 テーブルを生成します。
m2m テーブルの生成を制御したいのは見ていません。外部キーをテーブルにマップします。私は明らかにこれを間違っています-アドバイスしてください...
ありがとう、ジェリー