MVC 数据上下文中的两个不同的连接字符串

MVC two different connection strings in data context

我目前设置了 2 个使用不同连接字符串的 dbcontext 类。每当我尝试从 "Cedulados" table 到 select 时,由于某种原因,它最终会使用 "DefaultConnection" 字符串。我做错了什么?

public class DataContext : DbContext
{
    public DataContext()
       : base("DefaultConnection")
    {
    }

    public DbSet<SEG_CEmpleados> Empleados { get; set; }
    public DbSet<SEG_CEmpNuevo> EmpleadosNuevos { get; set; }
    public DbSet<SEG_Estados> Estados { get; set; }
    public DbSet<SEG_Tarjetas> Tarjetas { get; set; }
    public DbSet<SEG_Visitantes> Visitantes { get; set; }
    public DbSet<SEG_Tipos> Tipos { get; set; }
    public DbSet<SEG_TiposDoc> TiposDoc { get; set; }

    public DbSet<SEG_Departamentos> Departamentos { get; set; }
    internal void Refresh(RefreshMode clientWins, object articles)
    {
        throw new NotImplementedException();
    }

}

public class CeduladosContext : DbContext
{
    public CeduladosContext()
       : base("Cedulados")
    {
    }

    public DbSet<Cedulados20110712> Cedulados { get; set; } 

    internal void Refresh(RefreshMode clientWins, object articles)
    {
        throw new NotImplementedException();
    }
}

public JsonResult PerCedula(string id)


{
    string mun = id.Substring(0, 3);
    string seq = id.Substring(3, 7);
    string ver = id.Substring(10, 1);

    var context = new CeduladosContext();

    var ced = context.Cedulados.FirstOrDefault();

    return Json(ced, JsonRequestBehavior.AllowGet);
}

我在 MSDN 上搜索了 DbContext Constructor,它说它将数据库名称或连接字符串作为参数。在您的问题中,您说您正在从 table Cedulados 中进行选择,您也将其传递给 DbContext。看来您应该传递数据库名称而不是 table 名称。或者你的数据库也被命名为“Cedulados?

https://msdn.microsoft.com/en-us/library/gg679467(v=vs.113).aspx

这是另一个资源,展示了类似的代码,并对您发布的内容进行了解释。

https://msdn.microsoft.com/en-us/data/jj592674.aspx

试试这个(注意构造函数参数中的 "name="):

public DataContext() : base("name=DefaultConnection")
public CeduladosContext() : base("name=Cedulados")

您可以找到更多信息here