【问题标题】:Entity Framework Execute Query on Multiple Servers实体框架在多台服务器上执行查询
【发布时间】:2016-07-04 14:20:16
【问题描述】:

我正在开发我的第一个 C# Web 应用程序,它需要按需从多个服务器导入数据。

我将服务器名称存储在表 (DataServer) 中。所以我需要连接到每台服务器并运行一个查询,我想将其结果添加到我的数据模型中。

这是我目前在我的存储库中拥有的

public void ScanServer(int serverKey)
    {
        var serverName =  FindByKey(serverKey).ServerName;
        var sqlQuery = "SELECT name ,description FROM myTbl";

        Context.Database.SqlQuery<Names>(sqlQuery);
    }

我知道使用 Context 是不正确的,我希望用我的 DataServer 表中保存的连接字符串替换它。

然后需要将结果添加到我的 Names DataModel。

我在正确的轨道上吗?

【问题讨论】:

  • 在我看来,您需要为每个服务器创建一个 DbContext 并传入连接字符串(这应该相当容易),然后如果您想要一些并行性,您可以执行 Context.Database... ,你可以先做sqlQueries.Add(SqlQuery&lt;Names&gt;(sqlQuery).ToListAsync()),然后再做Task.WhenAll(sqlQueries)

标签: c# sql-server entity-framework model-view-controller


【解决方案1】:

您应该能够使用连接字符串打开连接:

foreach(string connectionString in Servers)
{
    using (var context = new DbContext(connectionString))
    {
      //Query code
    }
}

【讨论】:

  • 非常感谢,我添加了以下 var DataServerContext = new DbContext(serverName); { DataServerContext.Database.SqlQuery(sqlQuery); }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-11
  • 1970-01-01
相关资源
最近更新 更多