0

我有一个使用带有 Razor 的 MVC3 的应用程序,它与一个数据库完美配合。我现在在尝试访问第二个数据库时遇到此错误:

数据库“master”中的 CREATE DATABASE 权限被拒绝。

我假设向项目中添加另一个 DbContext 类与添加第一个预先创建的数据库的过程相同,因此我将第二个连接字符串添加到 web.config 中,如下所示:

<connectionStrings>
<add name="DbContext1" connectionString="Data Source=db1.server.com;Initial Catalog=dbName1;User Id=db1;Password=*&#!$;" providerName="System.Data.SqlClient" />
<add name="DbContext2" connectionString="Data Source=db2.server.com;Initial Catalog=dbName2;User Id=db2;Password=*&#!$;" providerName="System.Data.SqlClient" />

然后我将第二个 DbContext 类添加到应用程序中:

public class DbContext1 : DbContext
{
    public DbSet<Table1> Object1 { get; set; }

    public DbSet<Table2> Object2 { get; set; }

    public DbSet<Table3> Object3 { get; set; }

    public DbSet<Table4> Object4 { get; set; }
}


public class DbContext2 : DbContext
{

    public DbSet<Table1> Object5 { get; set; }
}

当我尝试访问第二个数据库时出现问题。第一个数据库仍然像魅力一样工作,但由于某种原因,第二个数据库似乎正在尝试创建一个新数据库,而不是在连接字符串末尾读取现有数据库。任何帮助将不胜感激!

4

1 回答 1

1

尝试在类的构造函数中显式选择上下文:

public class DbContext1 : DbContext
{
    public DbContext1() : base("DbContext1")
    {
    }
    public DbSet<Table1> Object1 { get; set; }

    public DbSet<Table2> Object2 { get; set; }

    public DbSet<Table3> Object3 { get; set; }

    public DbSet<Table4> Object4 { get; set; }
}


public class DbContext2 : DbContext
{
    public DbContext2() : base("DbContext2")
    {
    }

    public DbSet<Table1> Object5 { get; set; }
}

或者,重载构造函数以接受连接字符串,并在代码中调用它:

public class DbContext2 : DbContext
{
    public DbContext2(string connectionString)  : base (connectionString)
    {
    }

    public DbSet<Table1> Object5 { get; set; }
}

然后当你创建一个新的上下文时:

var context = new DbContext2("DbContext2");
于 2012-09-11T02:46:59.503 回答