C# 从子实体获取统计信息的正确方法
请帮我找到一个有效的方法 该计划具有以下特点: 项目1-N模块 模1-N子模。 子模块1-N段。 每个段具有不同的默认/完成状态和字数 将段插入数据库并存储在列中时,会进行字数计算 观点。 项目清单 应该有不到100个项目,所以im列出了所有没有包含的项目 参数为1 projectId的模块列表应有一列,其中包含单词completed/total和行completed/total 参数为1 moduleId的子模块列表的列应包含文字completed/total和行completed/total 假设每个模块大约有50k行段。所以表演是必须的 备选案文1: 我的孩子们,算一算吧 备选案文2: 使用CRON作业向数据库中的表添加Stats列以更新它们 或者在mysql中存储进程/触发器。 选项3?:在mysql中创建2个视图?从未做过,但也许他们适合这份工作? 建议的选项:还没有 以前从未使用过如此大的数据集,性能是必须的。C# 从子实体获取统计信息的正确方法,c#,mysql,asp.net,performance,entity-framework,C#,Mysql,Asp.net,Performance,Entity Framework,请帮我找到一个有效的方法 该计划具有以下特点: 项目1-N模块 模1-N子模。 子模块1-N段。 每个段具有不同的默认/完成状态和字数 将段插入数据库并存储在列中时,会进行字数计算 观点。 项目清单 应该有不到100个项目,所以im列出了所有没有包含的项目 参数为1 projectId的模块列表应有一列,其中包含单词completed/total和行completed/total 参数为1 moduleId的子模块列表的列应包含文字completed/total和行completed/total
请告知您的具体问题是什么?请显示不起作用的代码。这并不是说它不起作用,我不知道计算这种子实体统计数据的正确方法是什么。它们是大表,不想每次我加载视图时都让服务器着火。具体问题是:如何有效地在视图中显示已完成的单词/总单词为什么不尝试这3个选项并测量差异?通常,数据库端的视图是最快的。
var query = _context.Submodules.Where(t => t.Id == id)
.Select(e => new Submodules{
Id = e.Id,
Name = e.Name,
Status = e.Status,
Token = e.Token,
ModuleId = e.ModuleId,
Gender = e.Gender,
TotalRows = e.TotalRows,
TotalWords = e.TotalWords,
CompletedWords = e.Segments.Where(a => a.Status == Abr.Recorded).Sum(y=> y.Wordcount),
CompletedRows = e.Segments.Where(a => a.Status == Abr.Recorded).Count()
}).ToList();