【问题标题】:How to Change Database on a Entity Framework Connection如何在实体框架连接上更改数据库
【发布时间】:2010-11-02 20:36:52
【问题描述】:

我有一个 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
}

【问题讨论】:

    标签: asp.net-mvc-2 .net-4.0 c#-4.0 entity-framework-4


    【解决方案1】:

    我可能会修改您的“This works...”版本,如下所示::

    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
    }
    

    【讨论】:

    • 谢谢,这个解决方案看起来好多了。将 GetMyObjects 中的第二行更改为“var scsb = new SqlConnectionStringBuilder(ecsb.ProviderConnectionString);”。
    猜你喜欢
    • 1970-01-01
    • 2013-09-21
    • 1970-01-01
    • 1970-01-01
    • 2013-10-13
    • 2017-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多