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

发布于 2024-09-29 18:27:02 字数 668 浏览 0 评论 0原文

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

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
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

临走之时 2024-10-06 18:27:02

我可能会修改你的“这有效...”版本,如下所示::

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
}

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
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文