2010-08-21 67 views
1

我在SQL數據庫中有一個ProductLevel表。它包含商店的產品。我想在早上用戶登錄手持設備時將這些記錄複製到ProductLevelDaily表中。如何將記錄從一個表中移動到另一個表中

當他們掃描物品時,布爾從虛假變爲真,因此在任何時候他們都可以看到要掃描/檢查的物品。

從移動設備我通過的siteID和日期到服務器:

int userID = int.Parse(oWebRequest.requestData[5]); and a few other things 

IEnumerable<dProductLevelDaily> plditems 
     = DSOLDAL.CheckProductDailyLevelbySiteCount(siteID, currentDate); 

此檢查是否有已經搬進這個表此店的任何記錄。在這個日子,這張表應該是第一次爲空,或者這個商店沒有記錄。

if (plditems.Count() == 0) // is 0 
{ 
    IEnumerable<dProductLevel> ppitems = DSOLDAL.GetProductsbySite(siteID); 

    // this gets the products for this store 
    if (ppitems.Count() > 0) 
    { 
     dProduct pi = new dProduct(); 

     foreach (dProductLevel pl in ppitems) 
     { 
      // get the product 
      pi = DSOLDAL.getProductByID(pl.productID, companyID); 

      dProductLevelDaily pld = new dProductLevelDaily(); 

      pld.guid = Guid.NewGuid(); 
      pld.siteID = siteID; 
      pld.statusID = 1; 
      pld.companyID = companyID; 
      pld.counted = false; 
      pld.createDate = DateTime.Now; 
      pld.createUser = userID; 
      pld.productID = pl.productID; 
      pld.name = "1000"; // pi.name; 
      pld.description = "desc"; // pi.description; 

      DSOLDAL.insertProductLevelDailyBySite(pld); 
     } 
    } 
} 

PDA上的weberequest響應返回NULL

我看不出有什麼問題,爲什麼它不會工作。

插入部件DSOLDAL:

public static void insertProductLevelDailyBySite(dProductLevelDaily pld) 
{ 
    dSOLDataContext dc = new dSOLDataContext(); 

    try 
    { 
     dc.dProductLevelDailies.InsertOnSubmit(pld); 
     // dProductLevelDailies.Attach(pld, true); 
     dc.SubmitChanges(); 
    } 
    catch (Exception exc) 
    { 
     throw new Exception(getExceptionMessage(exc.Message)); 
    } 
    finally 
    { 
     dc = null; 
    } 
} 

此代碼的工作,直到我把foreach循環內與插入

IEnumerable<dProductLevelDaily> plditems 
      = DSOLDAL.CheckProductDailyLevelbySiteCount(siteID, s); 

if (plditems.Count() == 0) // plditems.Count() < 0) 
{ 
    IEnumerable<dProductLevel> ppitems = DSOLDAL.GetProductsbySite(siteID); 
    if (ppitems.Count() > 0) 
    { 

     oWebResponse.count = ppitems.Count().ToString(); 
     oWebResponse.status = "OK"; 
    } 
    else 
    { 
     oWebResponse.count = ppitems.Count().ToString(); 
     oWebResponse.status = "OK"; 

    } 
} 
else 
{ 
    oWebResponse.count = "2"; // plditems.Count().ToString(); 
    oWebResponse.status = "OK"; 
} 
+0

太多的代碼樣本在SO上的問題太少,嘗試削減你的樣本,並更清楚地解釋你有什麼具體問題。 – 2010-08-21 03:15:48

回答

0

這些類型的批量操作都沒有很好地匹配到什麼Linq-to-SQL的確如此。

在我看來,我會使用一個存儲過程來做到這一點,你可以在你的Linq-to-SQL DataContext中包含這些存儲過程並從那裏調用。

這也會將數據留在服務器上,並將其從一個表複製到另一個表,而不是將所有數據都下載到客戶端並重新上傳到服務器。

Linq-to-SQL是一個偉大的工具 - 用於操作單個對象或小集合。它不太適合批量操作。

相關問題