我可以覆盖EF6中的DbContext来动态选择不同的连接字符串吗?

时间:2014-04-11 06:35:29

标签: c# sql .net sql-server entity-framework

我参与了使用asp.net mvc,EF6和SQL Server开发的项目。代码是一团糟,他们使用linq到处检索数据。现在,他们即将为不同的国家/语言添加第二个SQL Server。我似乎无法理解DbContext / IDbConnectionFactory的东西,但是我可以在这里轻松地完成它并覆盖某些地方,所以我可以根据选择插入正确的连接字符串培养

简化:

我想覆盖DbContext所以当它被创建时,我可以根据会话值插入连接字符串(例如),而不在构造函数中指定连接字符串。

我将如何实现这一目标?当然,这样做是正确的..

THX!

/麦克

1 个答案:

答案 0 :(得分:1)

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

public static DBContext Create()

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

您尝试实现的目标在某种程度上是数据库分片架构。 互联网上有多种资源,您可能希望了解这些资源以熟悉数据分片... 即http://www.4tecture.ch/blog/sql-azure-federations-with-entity-framework