gpt4 book ai didi

c# - Entity Framework 4.0 - 返回模型对象列表 + 每个对象的子对象数

转载 作者:太空宇宙 更新时间:2023-11-03 20:36:09 24 4
gpt4 key购买 nike

我在我的项目中遇到了一个常见的需求,即返回我的模型对象的集合,以及每个对象中某些类型的 child 的数量,但我不知道是否可能或如何建模“TotalCount "模型类中的属性并将其填充为单个 Entity Framework 查询的一部分,最好使用 LINQ 查询。是否可以在使用 Entity Framework .Include("Object") 和 .Skip() 和 .Take() 的同时执行此操作?我是 Entity Framework 的新手,所以我可能会遗漏大量明显的东西,这些东西可以让这个......

我也希望能够对动态构造的计数属性进行分页。我认为最具可扩展性的方法是将计数存储为单独的数据库属性,然后简单地查询计数属性。但是对于我正在处理的行数较少的情况,我宁愿动态地进行计数。

在这样的模型中:

表:类

表:教授

表:与会者

表:类注释

我想以 List 的形式返回 Class 对象的列表,但我也希望在单个查询(首选 LINQ)中确定 Attendees 和 Class comments 的计数,并在两个 Class 属性中设置AttendeeCount 和 ClassCommentCount。

到目前为止我有这个:

var query = from u in context.Classes
orderby tl.Name
select u;

List<Class> topics = ((ObjectQuery<Class>)query)
.Include("ClassComments")
.Skip(startRecord).Take(recordsToReturn).ToList();

任何仍然允许使用 .Include() 和分页的建议或替代查询方法将不胜感激,以便尽可能生成单个数据库查询。感谢您的任何建议!

最佳答案

试试这个:

public class ClassViewModel {
public Class Class { get; set; }
public int AttendeeCount { get; set; }
public int ClassCommentCount { get; set; }
}


var viewModel = context.Classes.Select(clas =>
new ClassViewModel {
Class = clas,
AttendeeCount = clas.ClassAttendes.Count,
ClassCommentCount = clas.ClassComments.Count}
).OrderBy(model => model.ClassCommentCount).Skip(startRecord).Take(recordsToReturn).ToList();

您不必包含评论也可以计数。

关于c# - Entity Framework 4.0 - 返回模型对象列表 + 每个对象的子对象数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4984337/

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