如何在从 .Include 实体框架查询返回的数据上指定 where 子句?

Posted

技术标签:

【中文标题】如何在从 .Include 实体框架查询返回的数据上指定 where 子句?【英文标题】:How do you specify a where clause on data returned from a .Include in an Entity Framework query? 【发布时间】:2010-09-27 06:17:33 【问题描述】:

给定以下数据库表层次结构:

Region
------
RegionId
RegionName

Country
-------
CountryId
RegionId
CountryName

Destination
-----------
DestinationId
CountryId
DestinationName

Venue
-----
VenueId
DestinationId
VenueName

我有以下实体框架查询:

var result = from region in context.Region.Include("Country.Destination.Venue") 
select region

这将返回所有表中的所有行(外连接)

是否可以引入 where 子句以便仅包含场所不为空的行(或使用内部连接)?

谢谢

【问题讨论】:

【参考方案1】:

试试这个。它应该返回您正在寻找的结果:仅具有相应地点的区域。

    var result = from region in context.Region.Include(Country.Destination.Venue)
                 let v = (from ctry in region.Country
                         join dest in context.Destination
                         on ctry.CountryId
                         equals dest.CountryId
                         into destGroup
                         from dests in destGroup
                         join ven in context.Venue
                         on dests.DestinationId
                         equals ven.DestinationId
                         into venGroup
                         select ctry).Any()
                 where v == true
                 select region;

【讨论】:

谢谢,我试过了,但是如果有关联的国家和目的地但没有关联的地点,它会带回所有地区。 好的。你可能是对的。我在这里的一个示例应用程序上对此进行了测试,但我只有三张桌子可以玩,而不是四张。我希望这显示了您可以尝试的示例。

以上是关于如何在从 .Include 实体框架查询返回的数据上指定 where 子句?的主要内容,如果未能解决你的问题,请参考以下文章

实体框架:查询子实体 [重复]

实体框架急切加载不返回数据,延迟加载有

Spring Boot Jpa框架自定义查询语句返回自定义实体

如何强制实体框架始终从数据库中获取更新数据?

如何使用实体框架执行原始 SQL 查询而无需使用模型?

在实体框架中使用更新数据库时子查询返回超过 1 个值错误