Mobil uygulamamda, SQL Server veritabanımın bir tablosundan veri almaya çalışıyorum. EF kullanıyorum ve daha iyi performans için sayfalandırmayı kullanmaya çalışıyorum. Tablonun son öğesinden veri almam gerekiyor. tabloda 20 satır varsa, sayfa 0, kimlikler 20, 19, 18, 17, 16 için sayfa 1 kimlikleri 15, 14, 13, 12, 11 vb.İçin ihtiyacım var...
Sorun şudur: "A" kullanıcısı tablodan veri indirirken, "B" kullanıcısı satır ekliyorsa ne olur? "A" kullanıcısı Sayfa 0 alırsa (yani kimlikler 20, 19, 18, 17, 16), ve aynı anda "B" kullanıcısı satır ekler (böylece ID 21), klasik sorgu ile sayfa 1 için "A" kullanıcısı kimlikleri alır 16, 15, 14, 13, 12... yani başka bir zaman kimliği 16
Kodum çok basit:
int RecordsForPagination = 5;
var list = _context.NameTable
.Where(my_condition)
.OrderByDescending(my_condition_for ordering)
.Skip (RecordsForPagination * Page)
.Take (RecordsForPagination)
.ToList();
Elbette Page
ön uçtan gelen int'dir.
Sorunu nasıl çözebilirim?
Bir çözüm buldum ama mükemmel olup olmadığını bilmiyorum. Kullanabilirim
.SkipWhile(x => x.ID >= LastID)
yerine
.Skip (RecordsForPagination * Page)
ve tabii ki LastID
her zaman ön uçtan gönderilir.
Bu kodla performansın her zaman iyi olduğunu düşünüyor musunuz? Daha iyi bir çözüm var mı?