Proste pytanie, czy możliwe jest uzyskanie tego zapytania w Entity Framework przy aktualizacji jednego obiektu?Aktualizacja oświadczenia z Entity Framework
update test set value = value + 1 where id = 10
Proste pytanie, czy możliwe jest uzyskanie tego zapytania w Entity Framework przy aktualizacji jednego obiektu?Aktualizacja oświadczenia z Entity Framework
update test set value = value + 1 where id = 10
Niezupełnie pod tym formularzem nie.
Będziesz musiał wybrać wszystkie podmioty, które pasują do twoich kryteriów, zapoznać się z nimi i zaktualizować je.
Jeśli szukasz czegoś, co zrobi to bezpośrednio w DB, ponieważ twój zestaw może być ogromny, będziesz musiał użyć SQL bezpośrednio. (Nie pamiętam, czy EF ma sposób na wykonanie zapytań UPDATE bezpośrednio w sposób Linq To SQL).
Powinno być, będzie po prostu trochę bardziej ograniczony.
var myEntity = context.First(item => item.id == 10);
myEntity.value += 1;
context.SaveChanges();
Powinny wytwarzać podobne SQL, można obejrzeć profiler, aby zobaczyć, co faktycznie jest generowane SQL, ale powinien być bardzo podobny do wyciągu.
EF-SQL generowany jest zupełnie inna: dwie instrukcje SQL, które nie są niepodzielne. –
+1 b/c używa rdzenia EF. –
Użyj funkcji Batch Aktualizacja Entity Framework Extended Library coś takiego:
dbContext.Tests.Update(t => t.Id == 10, t => new Test() { Value = t.Value + 1 });
MutantNinjaCodeMonkey wspomniał o tej bibliotece w komentarzu do innej odpowiedzi. Uważam, że biblioteka tak dobrze pasuje do ustawy, że warto zwrócić na to uwagę w osobnej odpowiedzi. –
Właśnie podejrzewam, użyję sproc – Drevak
Albo możesz użyć tego: http://weblogs.asp.net/pwelter34/archive/2011/11/29/entity-framework-batch-update- i-future-queries.aspx – MutantNinjaCodeMonkey
@MutantNinjaCodeMonkey Nice package, thanks for sharing! –