1

我有 2 个 Windows Azure 数据库服务器,它们的表方案相同,但数据不同。
在我的 asp.net 站点中,我像这样连接我的第一个数据库:

Web.config

<add name="FirstDBContext" connectionString="..." providerName="..." />

数据库上下文.cs

public class FirstDBContext: DbContext
{
   public DbSet<Data> Datas{ get; set; }
}

数据控制器.cs

private UsersContext db = new UsersContext();
public ViewResult Index()
{
   return View(db.Datas.ToList());
}

如您所见,我在代码中设置了我的数据库。例如,如何通过下拉列表将其更改为能够将一个 DB 动态更改为另一个 DB?

非常感谢 !

4

2 回答 2

1

您可以在初始化 UsersContext 时传递连接字符串的名称

例如,如果您有以下连接搅拌

<add name="csFirstDB" connectionString="..." providerName="..." />
<add name="csSecondDB" connectionString="..." providerName="..." />

您可以将您的 UsersContext 更改为

public class UsersContext : DbContext {
    public UsersContext (string connectionName) : base(connectionName){ }
}

现在,当您初始化 UsersContext 类对象时,传入连接字符串名称,它将引用该特定数据库。

于 2012-09-10T08:58:02.137 回答
0

谢谢,这是个好主意。正确回答你。我现在可以更改目标数据库,并且可以列出条目。但是当我想要一个条目的详细信息时,它会返回一个错误。
我有测试:

private UsersContext db = new UsersContext("db1");

public ViewResult Index()
{
   db = new UsersContext("db2");
   return View(db.Users.ToList());
}

这将返回良好的 db2 列表,但是当我继续详细信息时,它会失败并返回错误。

这是问题的答案: 在运行时更改 dbContext

于 2012-09-10T13:13:29.170 回答