Aktywne Wpisy
Brawo dla uśmiechniętych fajnop0laków z Jagodna.
Jesteście cudowni ❤️❤️❤️
( ͡º ͜ʖ͡º) #rudeobietnice
#bekazlewactwa #bekazpo #idiokracja
Jesteście cudowni ❤️❤️❤️
( ͡º ͜ʖ͡º) #rudeobietnice
#bekazlewactwa #bekazpo #idiokracja
Anonek463 +35
Czaicie, że baba wydaje na jedzenie dla swojego psa więcej niż dla siebie a duża część ludzi w komentarzach pisze, że to normalne xD #psiarze #kociara #kociarze #logikarozowychpaskow #logikaniebieskichpaskow #heheszki #pies #kot #zwierzaczki
Aktywne Znaleziska
Zawiera treści 18+
Ta treść została oznaczona jako materiał kontrowersyjny lub dla dorosłych.
Jak to rozwiązać, żeby to było w 100% bezpieczne i nie pojawiła się sytuacja, gdy dwie osoby zrobią dokładnie w tym samym momencie zamówienie na ten sam produkt i będą miały tą samą wartość Amount i każda z nich zmniejszy bazą wartość Amount i to zapisze 'tylko po jednej zmianie' :
1. var product = await _context.Products.FirstOrDefault(x => x.Id == request.productId);
2. product.Amount -= request.amount;
//tutaj jakaś długa operacja załóżmy
3. await _context.SaveChangesAsync()
I teraz załóżmy Klient1 jest pomiędzy 2., a 3. i wskakuje Klient2 i robi 1. przez co ma jeszcze starą wartość w product.
Czy tutaj powinniśmy użyć jakichś Mutexów? A może struktura bazy jest głupia i nie powinniśmy w taki sposób przechowywać "Amount"?
#csharp #netcore #programowanie #programista15k #webdev
geez, trollujesz czy masz 2 miesiace doswiadczenia lub mniej?:D
Możesz rozwinąć?
@waniliowe-ptasie-mleczko: no co to za okreslenie propertka :D
@bin-bash: to samo pomyslalem ( ͡° ͜ʖ ͡°)
W każdym razie dziękuję za pomoc, mam już keywordy do googlowania i rzeczy do testowania ( ͡° ͜ʖ ͡°)
@kotwica407:
https://docs.microsoft.com/en-us/ef/ef6/saving/concurrency tutaj jest przykład ktory demonstruje przypadek uzycia o ktorym mowisz (break point na savechanges i update wiersza przez ssms) i nikt zadnych concurrency tokenów nie uzywa
Context.beginTransaction
Transaction.commit
@kotwica407: Optimistic locking to właśnie inna nazwa na concurrency tokeny