Tidak ada Detach(object entity)
pada DbContext
.
Apakah saya memiliki kemampuan untuk melepaskan objek pada kode EF terlebih dahulu?
Tidak ada Detach(object entity)
pada DbContext
.
Apakah saya memiliki kemampuan untuk melepaskan objek pada kode EF terlebih dahulu?
Jawaban:
Jika Anda ingin melepaskan objek yang ada, ikuti saran @ Slauma. Jika Anda ingin memuat objek tanpa melacak perubahan, gunakan:
var data = context.MyEntities.AsNoTracking().Where(...).ToList();
Seperti disebutkan dalam komentar, ini tidak akan sepenuhnya melepaskan entitas. Mereka masih terikat dan malas memuat karya tetapi entitas tidak dilacak. Ini harus digunakan misalnya jika Anda ingin memuat entitas hanya untuk membaca data dan Anda tidak berencana untuk memodifikasinya.
Ini sebuah opsi:
dbContext.Entry(entity).State = EntityState.Detached;
entity
harus menjadi objek tipe yang terwujud yang merupakan bagian dari kelas model Anda (Orang, Pelanggan, Pesanan, dll.). Anda tidak dapat secara langsung meneruskan <T> IQueryable ke dbContext.Entry(...)
. Apakah itu pertanyaan yang Anda maksudkan?
Detached
. Jika Anda ingin memuat entitas dari DB tanpa melampirkannya sama sekali ke konteks (tidak ada pelacakan perubahan), gunakan AsNoTracking
.
Detached
.
using(ctx){ return ctx....ToList(); }
. Dalam kasus seperti itu menggunakanAsNoTracking()
akan masuk akal karena saya akan menghemat mengisi konteks objek yang tidak perlu. Saya kira itu mungkin akan memiliki manfaat konsumsi kinerja dan memori terutama untuk daftar besar, kan?