1

私はCodeFirstを初めて使用し、データモデルを構築しようとしています。1つの問題を除いて、すべて問題ありません。次のことをマッピングしようとしています。

public class Something
{
       ...
       public virtual Layer Layer1 { get; set; }
       public virtual Layer Layer2 { get; set; }
       public virtual Layer Layer3 { get; set; }
       ...
}

public class Layer
{
       ...
       public virtual Something Something { get; set; }
       ...
}

Somethingクラスは問題なくマップされますが、LayerからSomethingへの逆方向の関係はまったくマップされません。データベーステーブルにはnullがあり、ほとんどすべてを試します。今のところ、わかりません...なぜLayerが参照できないのですか。何かに?

前もって感謝します。

4

1 に答える 1

0
  1. 3つのFKがあるため、クラスSomethingにタイプLayerの3つのプロパティが必要であり、クラスLayerにタイプSomethingの3つのプロパティも必要です。どういうわけか、Layerクラスに関連するすべてのSomethingを1つのプロパティに集めることはできません。
  2. 2つのテーブルの間に複数のFKがあるため、IDを指定し、データ注釈を使用してIDをナビゲーションプロパティに接続する必要があります。
  3. 私は「通常の」FKを想定しているので、レイヤーレコードが複数のSomethingによって参照される可能性があることを意味します。その場合、LayerクラスのSomething-propertiesよりもコレクションである必要があります。

一緒に、これは次の結果になります。

public class Something {
        public int SomethingId { get; set; }
        [ForeignKey("Layer1")]
        public int Layer1Id { get; set; }
        [ForeignKey("Layer2")]
        public int Layer2Id { get; set; }
        [ForeignKey("Layer3")]
        public int Layer3Id { get; set; }
        [ForeignKey("Layer1Id")]
        public Layer Layer1 { get; set; }
        [ForeignKey("Layer2Id")]
        public Layer Layer2 { get; set; }
        [ForeignKey("Layer3Id")]
        public Layer Layer3 { get; set; }
    }

    public class Layer {
        public int LayerId { get; set; }
        [InverseProperty("Layer1")]
        public Something Something1 { get; set; }
        [InverseProperty("Layer2")]
        public Something Something2 { get; set; }
        [InverseProperty("Layer3")]
        public Something Something3 { get; set; }
    }
于 2012-08-01T12:31:03.463 に答える