2017-06-13 64 views
0

您好我正在使用linq和sql來創建一個窗口serrvice更新一些行,如果在過去的5分鐘內迄今表中有變化,這是什麼我有:從2個不同的數據庫,2個不同的表Linq到SQL bulkupdate

using System; 
using System.Data.SqlClient; 
using System.Linq; 
namespace Prueba 
{ 
internal static class Program 
{ 
    private static void Main() 
    { 
     int tienda = 9; 

     var conex = new DataClasses1DataContext(); 
     try 
     { 
      var source = 
       new SqlConnection(
        "Server=LAPTOP-VCD9V9KH\\SQLEXPRESS;Database=backoffice;User Id=sa; Password=root;"); 

      var destination = 
       new SqlConnection(
        "Server=LAPTOP-VCD9V9KH\\SQLEXPRESS;Database=Corporativo_PRB;User Id=sa; Password=root;"); 
      source.Open(); 
      destination.Open(); 
      source.CreateCommand(); 
      var infoExistenciases = conex.Info_Existencias.Where(x => x.FechAct > DateTime.Now.AddMinutes(-5)); 

      foreach (var x in infoExistenciases) 
      { 

       var cmd2 = new SqlCommand(
        "update Info_Corp_Existencias set Existencia =" + x.Existencia + " where sku ='" + x.SKU + "'" + 
        "AND Tienda =" + tienda, destination); 
       cmd2.ExecuteNonQuery(); 
      } 

      source.Close(); 
      destination.Close(); 
      Console.Beep(); 
     } 
     catch 
      (Exception e) 
     { 
      Console.WriteLine(e); 
      Console.ReadLine(); 
      throw; 
     } 
    } 
} 

}

到目前爲止,該代碼更新目標服務器的一切,但我真的不能真正找準下來怎麼把一切到一個臨時表,讓LINQ更新它的foreach參數。

謝謝您的時間

+0

因此,不是運行一個更新語句,而是想要使用linq併爲每一行執行update-statement? –

+0

是的,目前它爲每個語句都這樣做,但我需要生成一些批量使用一個連接到數據庫,而不是使用foreach屬性。 – Darkpaladin

回答

0

因爲它是在兩個不同的表,這是難以選擇在第二個表中的對應行不知道表的設計完全相同。但你也許可以做這樣的事情:

var cmd2 = new SqlCommand(
       "update Info_Corp_Existencias set Existencia = (select field FROM Info_Existencias WHERE [email protected] where sku ='" + x.SKU + "'" + 
       "AND Tienda =" + tienda, destination); 
      cmd2.ExecuteNonQuery(); 

所以離開了foreach語句,只是推出一個更新語句,將通過使用子查詢,以得到該行的正確的值更新每一行的字段中輸入數據庫。

希望這會有所幫助。

+0

不幸的是,從foreach中移除聲明會刪除與x的關係,這是我與我的表格的關係。在做windows服務之前,我在測試環境中進行測試。 雖然我當前的腳本更新,如果表在過去的5分鐘內修改它,它逐行進行。我有點需要它來做一個bulkupdate。 – Darkpaladin

+0

是的,我知道,這就是爲什麼我建議使用子查詢。是否有可能從子查詢的第二個表中選擇正確的行? –

相關問題