ada yang pakai asp.net MVC? kalau ada kira2 kenapa ya store procedur saat di execute sama linq kok kadang2 lambat? cuman setelah di alter sp nya cepat lagi
Linq as in EFCore?
iya pak
cuman ini muncul kadang2, tapi sp nya kalau saya execute di sql management studio aman2 aja cuman beberapa ms
coba ke appsettings.json, set Logging.LogLevel.Default: "Information"
Logging.LogLevel.Microsoft: "Information"
terus query lagi. cek keluar berapa banyak query
kalau lebih dari 1, artinya coding kamu bermasalah, kena N+1 problem
kalau di asp.net mvc 5 ini enggak ada pak, cuman ada web.config
ya udah coba copas LINQ nya ke sini
List<procGetPO_Result> datacount = (from d in db.procGetPO(roleId,startDate,endDate) select d).ToList();
disini yang lambat pak
mending masukin pastebin wkwkwkw
ini versi lengkap controllernya
lambatnya disini aja ketika saya debug
dotnet berapa?
4.8 pak
.net framework ya berarti
setelah saya check masih yg 4.5.2 rupanya
dulu saya pernah ngasih wejangan soal IQueryable vs IEnumerable vs ICollection tapi kayanya udah kehapus
hati2 bikin complex where clause di LINQ
kamu harus tau kamu sedang apply LINQ operator di IEnumerable, IQueryable, atau ICollection
depending on the target type, hasilnya beda2 biarpun kelihatan isomorphic
Itu tiga2nya harus realised/collected atau engga om?
ICollection
: materialized
IEnumerable
: stream, reenumerated every time
IQueryable
: expression (AST) builder. cuma build expression tree, lalu converted ke bentuk lain ketika dicompile
Woke, clear
btw enggak bisa
common mistake ketika pake LINQ to SQL atau EF itu adalah bikin IQueryable yang di C# dianggap simple operation, tapi either nggak ada padanannya di SQL atau nggak efisien ketika ditranslate ke SQL
iya saya pakai IEnumerable saat exec https://t.me/teknologi_umum_v2/249149, karena datatable butuh total rows
ini udah jadi list, udah enumerated
jadi instead of doing this:
query = query.OrderBy(item => {
switch (sortkey) {
case 0: return item.Name;
case 1: return item.Price;
default: return item.Id;
}
});
do this:
switch (sortkey) {
case 0:
query = query.OrderBy(x => x.Name);
break;
case 1:
query = query.OrderBy(x => x.Price);
break;
default:
query = query.OrderBy(x => x.Id);
break;
}
IEnumerable sama List beda, List implements IEnumerable, tapi ga semua IEnumerable itu List
versi atas itu nambahin something complex ke dalam IQueryable. udah pasti chaos ensues. sedangkan versi bawah apply perubahan IQueryable tergantung sikon
Iya ngga bisa krn itu di c# baru si. Sedangkan km pake .net framework 4.5 bisa aja c# nya masi jadul juga
TIL
untuk nambah asc/descnya dimana pak?
di dalam IEnumerable dan ICollection memang kedua hal ini sama aja. tapi di IQueryable hasilnya beda jauh
saya orang jadul :(
bener pak, saya buat begitu karena datatablenya butuh total rows
switch (sortkey) {
case nameof(Foo.Name):
if (sortasc) {
query = query.OrderBy(x => x.Name);
} else {
query = query.OrderByDescending(x => x.Name);
}
break;
....
}
panjang jadi code nya ya pak
panjang != ga efisien
biarin aja panjang wkwkw
ordering function kamu complex
lagian harusnya kamu pakai Expression<Func<ModelName, string>>
bukan Func<ModelName, string>
ini kalau pake IQueryAble pak
itu ICollection?
oh enumerable
aman kalo gitu
aman berarti tetap pakai Func<ModelName, string>
kan pak?
aman