我可以重写EF6中的DbContext以动态选择不同的连接字符串吗

本文关键字:连接 字符串 选择 动态 EF6 重写 中的 DbContext 我可以 | 更新日期: 2023-09-27 17:58:01

我来晚了,参与了一个使用asp.net mvc、EF6和SQL Server开发的项目。代码一团糟,他们到处使用linq来检索数据。现在,他们将为不同的国家/地区/语言添加第二个SQL Server。我似乎无法理解DbContext/IDbConnectionFactory的内容,但我能在这里以简单的方式做到这一点,并在某个地方覆盖一些内容吗?这样我就可以根据所选的区域性插入正确的连接字符串了?

简化:

我想重写DbContext,这样在创建它时,我就可以根据会话值插入连接字符串(例如),而无需在构造函数中指定连接字符串。

我将如何实现这一点?当然要用正确的方式。。

Thx!

/Mike

我可以重写EF6中的DbContext以动态选择不同的连接字符串吗

您的DBContext必须创建为分部类。在它旁边创建第二个分部类,并在那里添加一个静态构造函数方法

public static DBContext Create()

实现它内部的逻辑,并在需要创建上下文的任何地方使用此构造函数。这将是一种工厂化的方法。您可以在配置文件中定义连接字符串,只需根据特定条件根据连接字符串名称创建上下文即可。

在某种程度上,您试图实现的是数据库分片架构。互联网上有多种资源,你可能想了解数据库碎片。。。即。http://www.4tecture.ch/blog/sql-azure-federations-with-entity-framework