Как изменить базу данных на подключении Entity Framework - PullRequest
2 голосов
/ 01 ноября 2010

У меня есть модель данных объекта ADO.NET, которую я хочу использовать в нескольких базах данных (на одном сервере), как бы вы ее решили?

// 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 Ответ

4 голосов
/ 01 ноября 2010

Я бы, вероятно, изменил вашу версию "Это работает ...", примерно так:

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
}
...