c# - 如何在 Entity Framework Core 运行时真正定位表
问题描述
我有KPI
表格,现在它有超过 5 亿行。我想将此表拆分为KPI_Year2011
, KPI_Year2012
... KPI_2020
(将于 2020 年 1 月 1 日创建)。
PS:所有表的结构相同,实体类型为KPI
.
你将如何在运行时像这样定位表
public IActionResult GetKpis(int year) {
/*var kpis = context.KPI.where(k => k.year == year).ToList(); */
var kpis = context.SetTargetTable($"KPI_Year{year}").ToList();
return View(kpis);
}
解决方案
对于您和您的程序,从逻辑上讲,这是一张大桌子。事实上,数据库需要将其拆分为多个较小的数据库以加快访问速度,这与您无关。
这称为分区,实际上应该是数据库的工作。
例如:
您可以在程序逻辑中手动实现它,但这只是意味着您重新发明轮子。事实上,可能是一个更蹩脚和更小轮子更频繁地断裂并且不适合你汽车的其余部分。
一旦你把这个工作交给数据库,你的问题就有了解决方案:什么都不做。您的程序甚至不知道它是数据库中的多个表。这是一个分区表。
推荐阅读
- bash - 如何在 Linux 的新终端中启动新进程
- solr - 在 URL 中指定分片时,应该将分布式请求发送到哪个 SOLR 服务器?
- r - 如何将色阶值修改为更小的增量
- c# - 如何选择异步委托的返回类型
- r - R如何用多个if else条件向量化一个函数
- arrays - 如何组织列表列表以与 scipy.optimize fmin init 数组兼容
- javascript - 如何设置 React Modal 边框半径
- .net-core - .net core 3 jwt token 配置部署linux
- javascript - 在 VUE 模板中动态传递所有对象的键和值作为 HTML 属性
- python - Pylint 说:W0233:来自非直接基类“嵌套”的 __init__ 方法被调用(非父初始化调用)