Teknologi Umum v2.0
Muhammad Nasrul

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

Muhammad Nasrul
Raymond WP

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

Ronny Gunawan ️
Muhammad Nasrul

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

Ronny Gunawan ️

ya udah coba copas LINQ nya ke sini

Muhammad Nasrul
Ronny Gunawan ️

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

Reinaldy

mending masukin pastebin wkwkwkw

Muhammad Nasrul

ini versi lengkap controllernya

Muhammad Nasrul
Reinaldy

dotnet berapa?

4.8 pak

Raymond WP

.net framework ya berarti

Muhammad Nasrul

setelah saya check masih yg 4.5.2 rupanya

Ronny Gunawan ️

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

Ronny Gunawan ️
D Noor

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

Muhammad Nasrul

btw enggak bisa

Ronny Gunawan ️

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

dicha?

ini udah jadi list, udah enumerated

Ronny Gunawan ️
Ronny Gunawan ️

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

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;
}
dicha?

IEnumerable sama List beda, List implements IEnumerable, tapi ga semua IEnumerable itu List

Albilaga
Muhammad Nasrul

btw enggak bisa

Iya ngga bisa krn itu di c# baru si. Sedangkan km pake .net framework 4.5 bisa aja c# nya masi jadul juga

Ronny Gunawan ️
Muhammad Nasrul

untuk nambah asc/descnya dimana pak?

switch (sortkey) {
  case nameof(Foo.Name):
    if (sortasc) {
      query = query.OrderBy(x => x.Name);
    } else {
      query = query.OrderByDescending(x => x.Name);
    }
    break;
  ....
}

biarin aja panjang wkwkw

Ronny Gunawan ️
Muhammad Nasrul

panjang jadi code nya ya pak

ordering function kamu complex

lagian harusnya kamu pakai Expression<Func<ModelName, string>> bukan Func<ModelName, string>

Ronny Gunawan ️
Muhammad Nasrul

ini kalau pake IQueryAble pak

itu ICollection?

oh enumerable

aman kalo gitu

Muhammad Nasrul
Ronny Gunawan ️

aman kalo gitu

aman berarti tetap pakai Func<ModelName, string> kan pak?