我在SQL数据库中有一个ProductLevel表。它包含商店的产品。我希望在用户早上登录到手持设备时将这些记录复制到ProductLevelDaily表中。
当他们扫描物品时,bool从false变为true,因此在任何时候他们都可以看到剩下要扫描/检查的物品。
在移动设备上,我将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循环放入insert
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 :(得分:0)
这些批量操作与Linq-to-SQL的功能不太匹配。
在我看来,我会使用存储过程执行此操作,您可以将其包含在Linq-to-SQL DataContext中并从那里调用。
这也会将数据留在服务器上,只是将其从一个表复制到另一个表,而不是将所有数据下载到客户端并重新上传到服务器。
Linq-to-SQL是一个很棒的工具 - 用于操作单个对象或小集。它不太适合批量操作。