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

标签 c# entity-framework-4 linq-to-entities

我在我的项目中遇到了一个常见的需求,即返回我的模型对象的集合,以及每个对象中某些类型的 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/

相关文章:

c# - 如何将相同的 VisualState 应用于多个控件?

.net - Entity Framework 和无法找到请求的 .Net 框架数据提供程序

visual-studio-2010 - 查看在Visual Studio中为 Entity Framework “保存更改”命令生成的SQL?

sql-server - 将 MAXDOP 添加到 Linq to Entities

c# - Entity Framework - 为导航属性指定继承类型的查询

c# - 如何使用 try and catch 捕获 C# 中的所有异常?

c# - AJAX调用部分 View

C# 使用未分配的局部变量 c

c# - 在 IQueryable 结果中获取索引

c# - Entity Framework : Problem associating entities with nullable field