我使用实体框架作为 WPF 数据库前端的基础。
我的数据库结构适用于办公楼,对于这个问题,您需要了解的只是顶层实体称为市场(想想郊区或中央商务区)。市场有很多房产,房产有很多调查。
我想将返回的调查限制为仅最近的 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 实体的属性。我可以编写一个 where 子句来过滤市场(顶级实体)的 ID,如下所示:
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.
如果有人能指出我正确的方向,我将不胜感激!
非常感谢,祝您有美好的一天!