前段时间我写了一段代码来更新数据库表中的多行.代码是这样的
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?
检查本文中使用的方法:
使用LINQ to SQL批量更新和删除
我要说这取决于数据库的效率或抽象对您来说是否更重要.SQL方法将在您的代码中创建一个更难跟踪的依赖项,但效率更高.引用的LINQ示例删除了对手动编码SQL的依赖性,但涉及至少2个查询和一些服务器端处理.