以下は、Entity Framework Modelのセクションです。私は、多くの "AssetHolding"レコードに関連する "ヘッダ"テーブルを持っていることに気付くでしょう。それ自体は継承(TpH)を使用する3つのタイプのいずれかになります。 はすべて3種類が同一に見える継承されたという事実を無視してください - このデータを編集する場合、これは意図的あるIncludeメソッドを使用してEntityFramework内の関連オブジェクトをロードする
を、私は1つのIDによって特定のヘッダー、およびすべての関連AssetHoldingsを引っ張っする必要があります。これを行う方法は、次のようになります。
public AssetValuationHeader GetValuationHeaderById(int id)
{
return this.AssetValuationHeaders
.Include("AssetHoldings")
.Where(vh => vh.Id == id)
.FirstOrDefault();
}
これは、上記の画像の赤い枠線で強調表示されたものすべてを正しく読み込みます。
私は上記の画像で緑色の境界線で強調表示されたビットをロードする必要があります。私はでもが必要です。ご覧のとおり、これは3つの継承テーブルのうちの1つに関連しています。
私はこれを試してみました:
public AssetValuationHeader GetValuationHeaderById(int id)
{
return this.AssetValuationHeaders
.Include("AssetHoldings")
.Include("AssetHoldings.SwapAssetHoldingNotionals")
.Where(vh => vh.Id == id)
.FirstOrDefault();
}
は、指定したパスが有効ではありません含めます。 EntityType 'CoreValuationModel.AssetHolding'は、名前が 'SwapAssetHoldingNotionals'のナビゲーション プロパティを宣言しません。
これはInclude
メソッドを使用しても可能ですか? (つまり、LazyLoadingを使用しないで)そうでない場合の回避策はありますか?
エンティティの継承のために動作しません。 http://stackoverflow.com/questions/944332/entity-framework-inheritance-and-includeを参照してください。 – ken2k