1

私は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 テーブルの生成を制御したいのは見ていません。外部キーをテーブルにマップします。私は明らかにこれを間違っています-アドバイスしてください...

ありがとう、ジェリー

4

1 に答える 1