gpt4 book ai didi

Linq/EF、急切加载和 GROUP BY 问题

转载 作者:行者123 更新时间:2023-12-04 01:03:13 25 4
gpt4 key购买 nike

我遇到了 GROUP BY 和急切加载的问题。我试着解释我在做什么。
我正在查询事件的数据上下文 ctx

事件类具有以下属性

string Description
DateTime Date
bool IsDeleted
Guid SubjectId
string Title
DateTime Created
Guid ForProjectId

Person TriggeredBy
List<Guid> Targets

有多个具有相同 SubjectId 的事件,我希望最终拥有具有唯一 SubjectId 并且是组中最新的事件。我最终得到以下查询。
var events = from x in
(from e in ctx.Events
.Include("TriggeredBy")
.Include("Targets")
group e by e.SubjectId
into g
select new
{
GroupId = g.Key,
EventsWithSameSubjectId = g,
}
)
select x.EventsWithSameSubjectId
.OrderByDescending(y => y.Created).FirstOrDefault();

查询编译良好并返回正确的结果集。但包含的属性始终为空。

当我删除查询以查看 eagor 加载是否正常工作时....
var events =  (from e in ctx.Events.OfType<DataNotificationEvent>()
.Include("TriggeredBy")
.Include("Targets")
select e).ToList();

这将返回具有所有包含属性的事件。

这是 Linq/EF 的已知问题/错误还是有什么办法可以摆脱这个错误。

问候

文森特·奥滕斯

最佳答案

您正在投影到匿名类型,因此 Include()不会像那样工作。因为您对 group 所做的一切而转换到匿名类型中就是改变查询的形状。这抛弃了急切的加载。阅读this article可能有帮助。

关于Linq/EF、急切加载和 GROUP BY 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5343536/

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