gpt4 book ai didi

c# - 查询连接表时未加载子实体

转载 作者:行者123 更新时间:2023-11-30 16:30:58 24 4
gpt4 key购买 nike

我有一个多对多关系,其中 Content 具有指向标签的 ContentTags。我已将相关的 [Include] 属性放在我的实体上以创建属性。

如果我编写 enumerate ObjectContext.Contents.Include("ContentTags.Tag"),那么我会按预期获得 ContentTags 和 Tags。但是,当我使用连接时,我的内容实体中缺少 ContentTags:

var contentsForTag =
from c in ObjectContext.Contents.Include("ContentTags.Tag")
join ct in ObjectContext.ContentTags on c.Id equals ct.ContentId
join t in ObjectContext.Tags on ct.TagId equals t.Id
where t.Name.ToLower().Contains(lowerTag)
select c;

知道这里发生了什么吗?

最佳答案

我不确定为什么会这样,但我认为这是因为矛盾。join 表示 EF 应该只加载包含 lowerTag 的标签,但 Include 表示应该加载所有标签。我猜想 EF 无法解决这个问题,这就是为什么不包含任何内容的原因。你应该能够在没有连接的情况下编写你的查询

var contentsForTag =
from c in ObjectContext.Contents.Include("ContentTags.Tag")
where c.ContentTags.Any(ct => ct.Tag.Name.ToLower().Contains(lowerTag))
select c;

关于c# - 查询连接表时未加载子实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5184330/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com