2016-07-14 39 views
0

我使用C#和LINQ來提取/推送SQL Azure中的數據。基本情景是,我們有一個Customer表,其中包含所有客戶(PK = CompanyID)和支持表(如LaborTypes和Materials(FK CompanyID到客戶表))。從一個SQL Azure表中提取數據,添加一列,然後填充不同的表格

當新客戶註冊時,Customers表中會創建一條新記錄。一旦完成,我想從一個單獨的表中加載一組默認材質和勞動類型。這很簡單,如果我只是想將數據直接從一個表複製到另一個表,但爲了填充新客戶的現有表,我需要獲取種子數據(例如laborType,laborDescription),爲每行添加CompanyID的種子數據,然後插入到現有的表中。

用SQL Azure使用C#和LINQ來完成此操作的最佳方法是什麼?

用於LaborTypes的用戶輸入的直接插入的示例在下文中用於上下文引用。

using (var context = GetContext(memCustomer)) 
{ 
    var u = GetUserByUsername(context, memUser); 
    var l = (from lbr in context.LaborTypes 
      where lbr.LaborType1.ToLower() == laborType 
      && lbr.Company == u.Company 
      select lbr).FirstOrDefault(); 

    if (l == null) 
    { 
     l = new AccountDB.LaborType(); 
     l.Company = u.Company; 
     l.Description = laborDescription; 
     l.LaborType1 = laborType; 
     l.FlatRate = flatRate; 
     l.HourlyRate = hourlyRate; 
     context.LaborTypes.InsertOnSubmit(l); 
     context.SubmitChanges(); 
    } 
     result = true; 
} 
+0

您正在嘗試: 在表A中創建記錄;那些記錄的種子數據存儲在表B和C中?或者你是否從用戶那裏獲取所有這些不同的信息? –

+0

沒有用戶在這部分的輸入,所以你的方法在第一個問題是正確的。我想使用表B中的種子數據(例如SeedLaborTypes)和添加CompanyID在表A中創建行(例如LaborTypes)。 – NCTechFarmer

+0

下面的答案是否錯過了商標? –

回答

0

你要做的是寫一個查詢從表B中檢索數據,並使用結果在表A上執行插入語句。

This has been covered elsewhere in SO I think, here would be a good place to start

我不知道對LINQ語法專門;但通過構建類似於@Murph超出該鏈接的答案,我認爲這可能有效。

var fromB= from b in TableB 
      where ... ;//identify the row/data from table B 
// you may need to make fromB populate from the DB here. 
var toInsert = ...; //construct your object with the desired data 
// do other necessary things here   
TableA.InsertAllOnSubmit(toInsert); 
dc.SubmitChanges(); // Submit your changes 
+0

謝謝你的迴應。我的缺乏理解是「爲所需數據構建對象」。這真的是我的問題的核心......我如何將一列數據添加到從種子表返回的查詢結果。現在我正在使用數據表,但我希望能找到一種更有效的方式來實現這一點。 – NCTechFarmer

相關問題