Yaklaşık 100 güncelleştirme bildirimi oluşturan bu eski LINQ-SQL kodunu yeniden hesaplarken yardıma ihtiyacım var.LINQ-SQL Tek bir işlemde birden çok Satır Güncelleştirme
En iyi çözüm ile uğraşmaya devam edeceğim, ancak bu konuyla ilgili bazı fikirleri/geçmiş deneyimleri takdir edeceğim.
İşte benim kod:
List<Foo> foos;
int userId = 123;
using (DataClassesDataContext db = new FooDatabase())
{
foos = (from f in db.FooBars
where f.UserId = userId
select f).ToList();
foreach (FooBar fooBar in foos)
{
fooBar.IsFoo = false;
}
db.SubmitChanges()
}
Esasen ben belirli UserId
değere sahip tüm kayıtlar için false IsFoo
alanını güncellemek istiyorum.
oluyor nedir .ToList()
, daha sonra her Foo nesnesi için, belirli bir kullanıcı için tüm FooBars
almak için bir sorgu kapalı tetiklendiğini onun IsFoo
özelliği güncellenirken bir UPDATE
ifadesinin yürütülmesini olduğunu.
Yukarıdaki kod bir tek UPDATE
deyimiyle yeniden faktörlendirilebilir mi?
İdeal olarak, ateş istediğim tek bir SQL aşağıdaki gibidir:
UPDATE FooBars
SET IsFoo = FALSE
WHERE UserId = 123
DÜZENLEME o db.ExecuteCommand kullanmadan yapılmış olamaz gibi Tamam
yüzden görünüyor.
Grr ...!
Sonunda yapmam gereken şey, DLINQ
ad alanı için başka bir uzantı yöntemi oluşturmaktır. Yine de bazı sabit kodlama (yani "WHERE" ve "UPDATE" yazıyor) gerektirir, ancak en azından uygulama ayrıntılarının çoğunu gerçek LINQ sorgu sözdiziminden gizler.
Bunu tek bir işlemde yapabileceğinizi düşünmüyorum. – VoodooChild