代码之家  ›  专栏  ›  技术社区  ›  Johan Olsson

如何在实体框架连接上更改数据库

  •  2
  • Johan Olsson  · 技术社区  · 15 年前

    // This results in a exception, "Specified method is not supported".
    private MyEntities _db = new MyEntities();
    
    public IQueryable<MyObject> GetMyObjects(string database)
    {
        _db.Connection.ChangeDatabase(database);
    
        return _db.MyObjects
    }
    
    // This works...
    private MyEntities _db;
    private string entityConnectionString = ConfigurationManager.ConnectionStrings["MyEntities"].ConnectionString;
    
    public IQueryable<MyObject> GetMyObjects(string database)
    {
        _db = new MyEntities(entityConnectionString.Replace("__REPLACE_ME__", database));
    
        return _db.MyObjects
    }
    
    1 回复  |  直到 15 年前
        1
  •  4
  •   Craig Stuntz    15 年前

    我可能会修改你的“这行…”版本,像这样:

    private MyEntities _db;
    private string entityConnectionString = ConfigurationManager.ConnectionStrings["MyEntities"].ConnectionString;
    
    public IQueryable<MyObject> GetMyObjects(string database)
    {
        var ecsb = new EntityConnectionStringBuilder(entityConnectionString);
        var scsb = new SqlConnectionStringBuilder(ecsb.ProviderConnectionString)
        scsb.InitialCatalog = database;
        ecsb.ProviderConnectionString = scsb.ToString();
        _db = new MyEntities(ecsb.ToString());    
        return _db.MyObjects
    }
    
    推荐文章