0

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.

誰かが私を正しい方向に向けることができれば、本当に感謝しています!

どうもありがとうございました。素晴らしい一日を!

4

1 に答える 1