我正在使用EF6创建和填充一个表,该表的主键为ServerTime(DateTime)。
该表非常大,当执行以下外部查询时,为了加快访问时间并享受将表拆分为较小的分区文件而不是一个大型.ibd文件的好处:
SELECT
gbpusd.servertime,
gbpusd.orderbook
FROM
gbpusd
WHERE
gbpusd.servertime BETWEEN '2014-12-23 23:48:08.183000' AND '2015-03-23 23:48:08.183000'
我希望在代码优先创建期间按servertime自动对表进行分区。
我已经知道用于按范围对表进行分区的原始MySql语法。
我当前的解决方案是先通过EF6代码创建并填充数据库,然后通过原始MySQL查询手动执行分区。另一个解决方案是在创建代码优先之后直接使用纯朴的ADO.NET,但我宁愿将所有内容简化在EF6代码中。
我需要知道的是如何通过Code First实现来完成同一件事(假设甚至有可能)
非常感谢。
最佳答案
它只是在加速吗?您需要在哪里填充这些数据?假设您具有服务层或管理者来使用此实体。您始终可以使用存储库来通过lembda表达式对实体执行操作。
例
using (var dataBaseContext= new your_DbContext())
{
var repoServer = new Repository<gbpusd>(dataBaseContext);
var searchedGbpusd =repoServer.SearchFor(i=> i.servertime <= date && i.servertime >= date).select;
///you can specify date what ever you like
///use this searched Data where ever you want to use.
}
希望它会有所帮助。
谢谢
法哈德