不久前,我写了一段代码来更新数据库表中的多个行。代码是这样的
var db = new MyDataContext();
db.Execute("UPDATE Details SET IsActive = 0 WHERE MasterId = 1");
然后有一天,当我得到文件的最新版本时,我看到有人将代码更改为如下所示
var details = from d in db.details where d.MasterId == 1 select d;
foreach (var detail in details)
detail.IsActive = false;
db.SubmitChanges();
所以我的问题是:更新多行的更好方法是什么?使用Linq还是SQL?
发布于 2008-12-08 00:42:12
我要说的是,这取决于效率和数据库中的抽象哪个对你更重要。SQL方式将在您的代码中创建一个更难跟踪但更高效的依赖项。引用的LINQ示例消除了对手工编码的SQL的依赖,但至少涉及2个查询和一些服务器端处理。
发布于 2009-11-12 05:49:52
PLINQO已经实现了批量更新和删除,plinqo生成的每个实体都可以使用批量更新和删除操作。
context.Task.Update(t => t.Id == 1, t2 => new Task {StatusId = 2});
这将执行一个Update Task Set StatusId = 2 Where Id = 1
发布于 2010-07-29 01:48:35
for (int i = 0; i < pListOrderDetail.Count; i++)
{
for (int j = 0; j < stempdata.Count; j++)
{
pListOrderDetail[i].OrderID = pOrderID;
pListOrderDetail[i].ProductID = stempdata[j].pProductID;
pListOrderDetail[i].Quantity = stempdata[j].pQuantity;
pListOrderDetail[i].UnitPrice = stempdata[j].pUnitPrice;
pListOrderDetail[i].Discount = stempdata[j].pDiscount;
db.SubmitChanges();
break;
}
continue;
}
https://stackoverflow.com/questions/348417
复制相似问题