2016-07-04 70 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