Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从子实体获取统计信息的正确方法_C#_Mysql_Asp.net_Performance_Entity Framework - Fatal编程技术网

C# 从子实体获取统计信息的正确方法

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

请帮我找到一个有效的方法

该计划具有以下特点: 项目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个视图?从未做过,但也许他们适合这份工作? 建议的选项:还没有

以前从未使用过如此大的数据集,性能是必须的。
请告知

您的具体问题是什么?请显示不起作用的代码。这并不是说它不起作用,我不知道计算这种子实体统计数据的正确方法是什么。它们是大表,不想每次我加载视图时都让服务器着火。具体问题是:如何有效地在视图中显示已完成的单词/总单词为什么不尝试这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();