2016-07-04 48 views
0

我正在开发我的第一个C#web应用程序,它需要根据需要从多个服务器导入数据。实体框架在多个服务器上执行查询

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

这是我目前在我的仓库

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

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

我知道使用上下文是不正确的,我希望能取代在我的数据服务器表内所保持的连接字符串。

结果则需要被添加到我的名字DataModel中。

我在正确的轨道上吗?

+1

在我看来,你将需要有创建每个服务器的DbContext和连接字符串中传递(这应该是相当容易),然后你可以做'Context.Database ...'如果你想要一些并行性,你可以做'sqlQueries.Add(SqlQuery类(SqlQuery类).ToListAsync())'然后做了'Task.WhenAll( sqlQueries)'。 –

回答

0

您应该能够使用连接字符串从而打开一个连接:

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

非常感谢,我添加了以下内容 var DataServerContext = new DbContext(serverName); { DataServerContext.Database.SqlQuery (sqlQuery); } – DiscoveryInfo