Bir sütunu güncellemek için bazı söz dizimi seçenekleri şunlardır:
seçenek 1
var ls=new int[]{2,3,4};
using (var db=new SomeDatabaseContext())
{
var some= db.SomeTable.Where(x=>ls.Contains(x.friendid)).ToList();
some.ForEach(a=>a.status=true);
db.SubmitChanges();
}
seçenek 2
using (var db=new SomeDatabaseContext())
{
db.SomeTable
.Where(x=>ls.Contains(x.friendid))
.ToList()
.ForEach(a=>a.status=true);
db.SubmitChanges();
}
3. Seçenek
using (var db=new SomeDatabaseContext())
{
foreach (var some in db.SomeTable.Where(x=>ls.Contains(x.friendid)).ToList())
{
some.status=true;
}
db.SubmitChanges();
}
Güncelleme
Yorumda talep edildiği gibi, birden çok sütunun nasıl güncelleneceğini göstermek mantıklı olabilir. Diyelim ki bu alıştırmanın amacı için sadece atları güncellemek istemiyoruz status. Güncellemek nameve eşleştiği statusyeri güncellemek istiyoruz friendid. İşte bunun için bazı sözdizimi seçenekleri:
seçenek 1
var ls=new int[]{2,3,4};
var name="Foo";
using (var db=new SomeDatabaseContext())
{
var some= db.SomeTable.Where(x=>ls.Contains(x.friendid)).ToList();
some.ForEach(a=>
{
a.status=true;
a.name=name;
}
);
db.SubmitChanges();
}
seçenek 2
using (var db=new SomeDatabaseContext())
{
db.SomeTable
.Where(x=>ls.Contains(x.friendid))
.ToList()
.ForEach(a=>
{
a.status=true;
a.name=name;
}
);
db.SubmitChanges();
}
3. Seçenek
using (var db=new SomeDatabaseContext())
{
foreach (var some in db.SomeTable.Where(x=>ls.Contains(x.friendid)).ToList())
{
some.status=true;
some.name=name;
}
db.SubmitChanges();
}
Güncelleme 2
Yanıtta LINQ to SQL kullanıyordum ve bu durumda veritabanına bağlanmak için kullanım şudur:
db.SubmitChanges();
Ancak Entity Framework'ün değişiklikleri gerçekleştirmesi için:
db.SaveChanges()
records.ForEach(x=> { x.Deleted = true; x.DeletedByUserID = deletedByUserId; x.DeletedOn = DateTime.Now; });