我参与了使用asp.net mvc,EF6和SQL Server开发的项目。代码是一团糟,他们使用linq到处检索数据。现在,他们即将为不同的国家/语言添加第二个SQL Server。我似乎无法理解DbContext
/ IDbConnectionFactory
的东西,但是我可以在这里轻松地完成它并覆盖某些地方,所以我可以根据选择插入正确的连接字符串培养
简化:
我想覆盖DbContext
所以当它被创建时,我可以根据会话值插入连接字符串(例如),而不在构造函数中指定连接字符串。
我将如何实现这一目标?当然,这样做是正确的..
THX!
/麦克
答案 0 :(得分:1)
您的DBContext必须已创建为分部类。在它旁边创建第二个分部类,并在那里添加静态构造函数方法
public static DBContext Create()
在其中实现逻辑,并在需要创建上下文的任何位置使用此构造函数。这将是一种工厂方法。您可以在配置文件中定义连接字符串,并根据特定条件简单地根据连接字符串名称创建上下文。
您尝试实现的目标在某种程度上是数据库分片架构。 互联网上有多种资源,您可能希望了解这些资源以熟悉数据分片... 即http://www.4tecture.ch/blog/sql-azure-federations-with-entity-framework