2

I got a ADO.NET Entity Data Model that I want to use on several databases (on the same server), how would you solve it?

// 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 Answer 1

4

I'd probably modify your "This works..." version, something like this::

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
}
Sign up to request clarification or add additional context in comments.

1 Comment

Thanks, that solution looks much better. Changed the second line in GetMyObjects to "var scsb = new SqlConnectionStringBuilder(ecsb.ProviderConnectionString);".

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.