WPF データベース フロント エンドの基盤として Entity Framework を使用しています。
私のデータベース構造はオフィスビル用であり、この問題について理解する必要があるのは、最上位エンティティが市場と呼ばれることだけです (郊外または中央ビジネス地区を考えてください)。マーケットには多くのプロパティがあり、プロパティには多くの調査があります。
返される調査を最新の 10 件の調査のみに制限したい (調査は 6 か月ごとに実施される)。
自動生成されたコードがどのようにクエリを構築しているかを確認できます。
Dim OMRMarketsQuery As System.Data.Objects.ObjectQuery(Of OMR.OMRInterfaceCustomCode.OMRMarket) = OMRInterfaceEntities.OMRMarkets
OMRMarketsQuery = OMRMarketsQuery.Include("Properties")
OMRMarketsQuery = OMRMarketsQuery.Include("Properties.OMRBuildingSurveys")
where 句を使用して、OMRBuildingSurvey エンティティのプロパティをフィルター処理したいと考えています。次のように、Market (最上位のエンティティ) の ID をフィルター処理する where 句を記述できます。
MRMarketsQuery = OMRMarketsQuery.Include("Properties.OMRBuildingSurveys").Where("it.ID >1000")
しかし、OMRBuildingSurveys エンティティのプロパティをフィルター処理したいのですが、そこに移動する方法が見つからないようです。私が試してみました:
OMRMarketsQuery = OMRMarketsQuery.Include("Properties.OMRBuildingSurveys").Where("it.Properties.OMRBuildingSurvey.ID >1000")
しかし、私はエラーが発生します:
An unhandled exception of type 'System.Data.EntitySqlException' occurred in System.Data.Entity.dll
Additional information: 'OMRBuildingSurvey' is not a member of 'Transient.collection[OMRInterfaceModel.Property(Nullable=True,DefaultValue=)]'. To extract a property of a collection element, use a subquery to iterate over the collection.
誰かが私を正しい方向に向けることができれば、本当に感謝しています!
どうもありがとうございました。素晴らしい一日を!