【问题标题】:ASP.NET - Can I use or select different DBs in an entity?ASP.NET - 我可以在实体中使用或选择不同的数据库吗?
【发布时间】:2015-10-26 04:25:54
【问题描述】:

我是 Entity Framework 和 Web API 的新手。我正在尝试 GET 表中的数据。但是该表将从不同的数据库中选择。所以,有多个数据库具有相同的表,我需要选择我需要从中获取表的数据库(我在想[Fromuri])。现在我只连接了一个数据库。不确定是否需要将其全部添加为连接字符串,或者是否有更简单的方法。

public IHttpActionResult Get()
{
    using (var MGC = new GC_BranchNameEntities())
    {
        var serializer = new JsonSerializer();
        var jsonIDSA = JsonConvert.SerializeObject(MGC.INV_LIVE_IDSA, Formatting.None);
        try
        {
            return Ok(jsonIDSA);
        }
        catch (Exception e)
        {
            return BadRequest("Error occured when retreiving IDSA data " + e.Message);
        }
    }
}

我可以做类似using(var MGC = new SelectdatabaseEntitiesusingParam) 这样的事情吗?

【问题讨论】:

  • 数据库是否具有相同的结构(表、关系、列)?如果是,则为数据上下文使用不同的连接字符串将打开与该数据库的连接。 It is possible 从代码中为实体框架创建连接字符串。
  • @MartinStaufcik 是的,完全一样。当然数据除外。

标签: c# asp.net entity-framework


【解决方案1】:

有一个DbContext 构造函数重载,它接受一个连接字符串或连接字符串的名称作为参数,其他的接受一个现有的DbConnection 对象。

更新:

向您的DbContext 派生类添加一个新的构造函数,将参数传递给基构造函数:

public GC_BranchNameEntities( string nameOrConnString ) :
    base( nameOrConnString )
{
}

然后,在实例化您的DbContext 时,传入要使用的连接字符串的名称(在您的配置文件中定义的名称)或实际的连接字符串。或者,您也可以创建一个构造函数重载来接受现有的 DbConnection 对象(类似于 nameOrConnString 参数)并将其传递给基本构造函数。

【讨论】:

  • 您能进一步解释一下吗?我现在正在查看我的 DBcontext.cs,但我有点迷茫
  • 完成了,我将如何从我的 Get 方法中选择我的数据库?我将如何从 Uri 实例化我想要的数据库?
  • 如果我只想将它指向我去的名字 base("name=" + nameOrConnString) ?
  • base(name) 将首先在 app.config 中查找使用该名称定义的连接字符串。如果没有(使用该名称),它将检查提供的字符串是否为连接字符串。
猜你喜欢
  • 1970-01-01
  • 2021-03-23
  • 1970-01-01
  • 1970-01-01
  • 2020-08-19
  • 1970-01-01
  • 1970-01-01
  • 2021-11-08
  • 2021-07-14
相关资源
最近更新 更多