繁体   English   中英

将Entity Framework与Archive数据库一起使用

[英]Using Entity Framework with Archive databases

我正在使用Entity Framework 6来执行基本的CRUD操作,这一切都很好。 我需要能够在日期范围内选择我的对象,这也是非常简单的。然而,这些对象可以分布在几个基本上是前一年数据仓库的数据库中。 一旦我们在日期范围内寻找它们。

示例我们想要2015年1月1日到2016年11月9日之间的所有Foo对象; 2015年的Foo数据将位于不同的数据库中。 这一直追溯到2005年。并非所有的Schema都是相同的。

我们可以有11个EF项目,或11个上下文和11个连接字符串。 该解决方案存在每年在创建存档时添加代码的问题。 这似乎是一个黑客。 在可预见的未来,交换到Azure存储方法不是一种选择。

更优雅的解决方案?

只要所有数据库对于要查询的实体都具有相同(或类似)的模式, DbContext以为所有数据库创建一个DbContext ,只需切换连接字符串即可。 您必须管理连接字符串列表并循环遍历它们,连接到每个连接字符串并查询每个连接字符串以获取数据。 当然,如果您的数据库以一致的方式命名(例如,根据年份),则不需要维护所有连接字符串。 如果您的查询只访问过一个数据库,那么您可以计算出哪个是合适的连接字符串并使用它。 这最终看起来像标准的分片策略。 以下是Microsoft针对EF的SQL Azure分片库的引用,它也可能是一种解决方案

或者,您可以使用SQL Server的跨数据库查询功能并在所有数据库中设置视图。 这有维护问题,更不用说性能问题了,但后来我不知道你的数据大小。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM