【发布时间】:2021-10-01 23:48:21
【问题描述】:
我有以下数据库结构
租户(一对多)-> 站点(一对多)-> SiteUrl
public sealed class Tenant : Entity
{
public IReadOnlyCollection<Site> Sites => _sites?.ToList();
}
public class Site : Entity
{
public IReadOnlyCollection<SiteUrl> Urls => _urls?.ToList();
}
我正在尝试使用 EF core 5.0 查询数据,并使用以下内容
var t = await tenants
.Include(t => t.Sites)
.ThenInclude(s => s.Urls.Where(su => su.Url == url))
.ProjectTo<TenantContextDto>(mapper.ConfigurationProvider)
.FirstOrDefaultAsync();
基本上,我试图根据网站的 url 获取租户,但我没有得到预期的结果。我已经尝试了代码的各种变体,但无法让它根据正在搜索的 url 找到正确的租户/站点。
任何帮助/建议将不胜感激
谢谢大家的回复
在我的数据库中 租户 1
- 站点 1
- 本地主机1
- 本地主机
- 站点 2
- 站点 3
当我搜索 localhost 时,我得到了正确的租户、正确的站点,但我得到了 url localhost1。
Gert Arnold:谢谢,完全忘记了投影忽略包括,那是一篇很棒的文章,你指点我谢谢。
【问题讨论】:
-
返回的结果是什么?您可能还想向我们展示正在使用的 url 与存储在数据库中的内容。
-
仅供参考,过滤
Inlcude与过滤查询不同,而且投影(几乎总是)忽略Includes。见here。
标签: c# linq entity-framework-core