9

コンテキストがその直後に破棄されるため、関連するすべてのエンティティ (->1 FK と ->N FK の両方) を積極的にロードする必要があるコードに特定のクエリがあります。

params Expression<Func<MyItem, object>>[] includesそれらを取り、内部でチェーンする一般的な「クエリ」メソッドを作成しました。その部分はうまく機能します。

クエリは次のようになります。

var item = facade.Query<MyItem>(
                c => c.Childs.Select(x => x.Parent),
                c => c.Childs.Select(x => x.SubChild1),
                c => c.Childs.Select(x => x.SubChildNotWorking),
                c => c.Childs.Select(x => x.SubChild2),
                c => c.Childs.Select(x => x.SubChild3),
                c => c.Childs.Select(x => x.SubChildrens)
                ).FirstOrDefault(c => c.Name == name);

動作していないプロパティのマッピング (SubChildNotWorking の構成に配置):

this.HasMany(scnw => scnw.Childs).WithOptional(c => c.SubChildNotWorking).HasForeignKey(c => c.MyForeignKey);

すべてのインクルードのうち、SubChildNotWorking実際には機能しないのは だけです。返されたオブジェクトをデバッガーで調べると、すべてのプロパティにプロキシが表示されます。プロキシを開くと、他のすべての関係の正しいデータと、プロパティの「オブジェクトコンテキストは既に破棄されています」という例外が表示されSubChildNotWorkingます。

私が見つけた唯一の違いSubChildNotWorkingは、null 許容 FK (DB の null 許容列と dbcontext の WithOptional 構成) であるのに対して、他のすべては WithRequired で構成された null 非許容 FK であるということです。

データベースも、Code First で作成されていない従来の DB であり、その規則に従っていません。DbContext でマッピングを作成しただけです。他のすべては正常に動作します。

Null 許容 FK で熱心な読み込みが機能しないかどうかを調べようとしていますが、それに関するドキュメントが見つかりませんでした。

それはバグですか、それとも意図した動作ですか? しかし、何よりも、どうすればこれを解決できますか?

ありがとう。

4

2 に答える 2

0

定義しましたか

[DataContract]

あなたのクラス(エンティティ)で?その場合は、SubChild に注釈を付けることを忘れないでください。

[DataMember] 

または、エンティティに対して GET 呼び出しを実行したときに、ロードされても表示されない場合があります。

于 2013-10-22T17:25:12.003 に答える