私のドメインモデルは、Trade
にはTradeLeg
が多いことがあります。私は次のマッピングを使用しようとしています。Entity Framework 6では、もう一方のナビゲーションプロパティを使用して1対多マッピングを作成するにはどうすればよいですか?
HasKey(t => t.TradeLegId);
Property(t => t.TradeLegId).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity)
.HasColumnName("TradeLegId");
Property(t => t.TrdId).HasColumnName("TrdId"); // FK back to trade
Property(t => t.Ordinal).HasColumnName("Ordinal");
Property(t => t.Description).HasColumnName("Description");
ToTable("TradeLeg");
私はExcpetionを取得し、いくつかの取引を選択しよう
展覧マッピング
HasKey(t => t.TradeId);
Property(t => t.TradeId).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity)
.HasColumnName("TradeId");
Property(t => t.Description).HasColumnName("Description");
Property(t => t.CounterpartyId).HasColumnName("CounterpartyId");
Property(t => t.Quantity).HasColumnName("Quantity");
Property(t => t.IsActive).HasColumnName("IsActive");
HasMany(t => t.TradeLegs);
ToTable("Trade");
貿易脚マッピング。
無効な列名
Trade_TradeId
。
私はそれが貿易に戻っTradeLegのナビゲーションプロパティを追加し、Trade
オブジェクトに私のHasMany()
マッピングに.WithRequired(u => u.Trade).HasForeignKey(u =>u.TrdId)
を追加することで動作させることができます。
しかし、私はTradeLeg
のナビゲーションプロパティをTrade
に戻したくありません。私はちょうどTradeLeg
にint FKプロパティ(TrdId
)を持っています。また、TradeLeg
のFKプロパティとしてTrdId
の代わりにTradeId
を使用すると、デフォルトルールのためにも機能することに気付きました。 HasMany()
の反対側のFKフィールドの名前をEFに伝える方法はありますか?
おかげで非常に多くのように、親のナビゲーションプロパティなしで子供に一対多たい他の方法で作業することができます。私はナビゲーションのプロパティが両方の側に存在し、すべてが期待どおりに動作するように見える場合、両側に空の句を使用してみました。 with節に逆方向ナビゲーションプロパティを追加することで得られるべきことはありますか?もしそうでなければ、私は週が空のままで忘れ去られることがあります。 – Shane
IMOナビゲーションプロパティがどのように設定されているかを正確に表現しようとしています。他の開発者(自分自身)に目的に応じた逆方向のナビゲーションプロパティがないことを伝えています。今度は、その逆が "戻る"ことができる複数のプロパティを持つ場合があります。エンティティに、同じタイプの2つのエンティティに対するナビゲーションプロパティがあるとします。これは実際のプロパティを指定せずに動作しません。例としては、子の2つの親エンティティ(オプション)があります。同じ種類の 'ParentA'と' ParentB'を両方とも持っていれば、ナビゲーションプロパティの設定がなければ、これはうまく動作しません。 – Nico
ポイントが意図を伝えるのに要したポイントですが、あなたが言及したケースでは、両方の親にナビゲーションプロパティを持ち、マッピング内に空の句が残っている必要があると思っていましたが、 linqを使ってクエリを実行し、関連するエンティティを参照したいとします。それはあなたが意味することですか? – Shane