运行时如何将Entity Framework连接到多个相同模式的数据库?

23

首先,让我声明我对EF非常新。话虽如此,这是我的困境:

将会有一个ASP.NET应用迁移到ASP.NET MVC。 我想在这个项目中使用EF。有一个主数据库存储“客户信息”。除此之外,每个“客户”都有他们自己的数据库。这些是我们的限制条件。

当前,在主数据库中存在客户信息,可以让我构建每个客户的连接字符串并进行单独的SQL调用。

在Entity Framework中如何完成同样的事情?每个数据库将具有相同的模式。是否有一种方法可以以编程方式切换连接字符串?这些数据库目前位于同一服务器上,但这不是必需的,它可能是完全不同的服务器。

任何想法?

在Web.config中使用多个连接字符串将是最后的选择。即使这样,我也不确定如何确切地连接这个应用程序。

提前感谢您。

3个回答

8

如果您在实体对象的构造函数中使用EntityConnection,您可以轻松更改数据库。

EntityConnection con = new EntityConnection(connString);
con.ChangeDatabase(dbName);
using (Entities context = new Entities(con))
{
    // Some code here
}

5

当您构建数据上下文时,以下是如何通过修改Context.Connection属性在运行时以编程方式更改连接字符串:

//Get the connection string from app.config and assign it to sqlconnection string builder
SqlConnectionStringBuilder sb = new SqlConnectionStringBuilder(((EntityConnection)context.Connection).StoreConnection.ConnectionString);
sb.IntegratedSecurity = false;
sb.UserID ="User1";
sb.Password = "Password1";

//set the object context connection string back from string builder. This will assign modified connection string.
((EntityConnection)context.Connection).StoreConnection.ConnectionString = sb.ConnectionString; 

来源: http://sivapinnaka.spaces.live.com/blog/cns!B027EF7E7070AD69!211.entry

这篇文章介绍了IT技术中的“HTTP 404错误”以及如何解决它。当你访问一个不存在或被删除的网页时,就会出现HTTP 404错误提示。这是因为服务器无法找到请求的页面。解决方法有多种,其中一种是检查URL是否正确输入,另外还可以尝试重新加载页面或清除浏览器缓存。


2
如果您的客户数量有限且连接字符串几乎不会更改,一种优雅的方法可能是使用ConfigurationManager.ConnectionStrings来检索所需的连接字符串。
例如:
string connectionString = ConfigurationManager.ConnectionStrings["Miller"].ConnectionString;
return new Entities(connectionString);

参见 http://msdn.microsoft.com/en-us/library/ms254494.aspx


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接