1

私のデータベースには、2つのクラスAとBがこのように作成したテーブル(多対多のテーブル)があります。

    this.HasMany(t => t.TrafficImageQuestions)
       .WithMany(t => t.TrafficImages)
        .Map(m =>
            {
                m.ToTable("TrafficImage_Answers");
                m.MapLeftKey("TrafficImagesGuid");
                m.MapRightKey("TrafficImageQuestionsId");


            });

ここで、カスタムクラスをこの同じテーブル「TrafficImage_Answers」に関連付けたいと思います。クラスoffcauseには、左キーと右キーがあり、さらに3.カスタムプロパティもあります。

(私はデータベース「Answer」に列を追加しました)

    public class TrafficImageAnswer
    {
        public System.Guid TrafficImageGuid { get; set; }
        public int TrafficImageQuestionId { get; set; }
        public byte Answer { get; set; }
    }

エンティティモデルでAとBの多対多の関係を追跡し、データベースにある3.プロパティAnswerを検索できるようにしたいので、これを実行しています。

私が試したこと

私は次のことをしようとしました:

    this.Property(t => t.TrafficImageQuestionId)
        .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
    this.Property(t => t.TrafficImageGuid)
        .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

    // Table & Column Mappings
    this.ToTable("TrafficImage_Answers");

しかし、私はテーブルがすでに存在していることを知っています、ロジック。そのテーブルを使用するだけで、作成しようとしないことを伝える必要があります。(EF 5およびパッケージマネージャーのDB緩和策でこれを行っています)。

4

1 に答える 1

0

それはサポートされていません。多対多の関係のためにジャンクションテーブルに追加のフィールドが必要な場合は、それを多対多としてマッピングすることはできません。各テーブルは1回だけマップできますが、テーブルをエンティティと多対多の関係に同時にマップすると、2回マップされます。

相互に多対多の関係ではなく、1対多の関係を使用するようにTrafficImageQuestions変更する必要があります。TrafficImagesTrafficImageAnswer

于 2012-10-01T08:52:40.530 に答える