Apakah ada cara untuk menonaktifkan pemuatan lambat untuk kueri tertentu di Entity Framework 6? Saya ingin menggunakannya secara teratur, tetapi terkadang saya ingin menonaktifkannya. Saya menggunakan properti virtual untuk memuatnya secara lambat.
c#
entity-framework
lazy-loading
Marco Alves
sumber
sumber
this.Configuration.LazyLoadingEnabled = false;
, lalu menyetelnya lagithis.Configuration.LazyLoadingEnabled = true;
? Juga, Anda dapat membaca msdn.microsoft.com/en-us/data/jj574232.aspxJawaban:
setel kode berikut sebelum kueri yang ingin Anda jalankan
context.Configuration.LazyLoadingEnabled = false;
sumber
Anda dapat menonaktifkan pemuatan lambat untuk kueri tertentu sebagai berikut:
public static Cursos GetDatosCursoById(int cursoId) { using (var bd = new AcademyEntities()) { try { bd.Configuration.ProxyCreationEnabled = false; return bd.Cursos.FirstOrDefault(c => c.cursoId == cursoId); } catch (Exception ex) { return null; } } }
sumber
Saya mungkin melewatkan sesuatu di sini, tetapi daripada mengubah konfigurasi setiap kali, mungkinkah pendekatan lain digunakan
.Include()
hanya pada kueri di mana Anda ingin memuat?Misalkan kita memiliki
Product
kelas yang memiliki properti navigasi keColour
kelas, Anda mungkin memuatColour
untukProduct
seperti ini -var product = _context.Products .Where(p => p.Name == "Thingy") .Include(x => x.Colours) .ToList();
sumber
Buka properti diagram Anda dan temukan properti yang ditujukan untuk pemuatan lambat dan nonaktifkan.
Jika Anda menggunakan kode terlebih dahulu, buka area konfigurasi Anda dan nonaktifkan dari sana dengan:
this.Configuration.LazyLoadingEnabled = false;
sumber
Di EF Core:
context.ChangeTracker.LazyLoadingEnabled = false;
Sesuai jawaban ini .
sumber
Pendekatan lain untuk Versi EF lain (Entity Framework 5)
//Note: ContextOptions instead of ChangeTracker or Configuration context.ContextOptions.LazyLoadingEnabled = false;
sumber
context
is anObjectContext
, more or less deprecated dari wrapper-nyaDbContext
,.Misalkan Anda memiliki ini:
IOrderedQueryable<Private.Database.DailyItem> items; using (var context = new Private.Database.PrivateDb()) { context.Configuration.LazyLoadingEnabled = false; items = context.DailyItem.OrderBy(c => c.sortOrder).OrderByDescending(c => c.isFavorite); }
Anda masih akan mendapatkan pemuatan lambat, meskipun setelan eksplisit tidak ke. Cara mengatasinya mudah, ubah menjadi ini:
List<Private.Database.DailyItem> items; using (var context = new Private.Database.PrivateDb()) { // context.Configuration.LazyLoadingEnabled = false; items = context.DailyItem.OrderBy(c => c.sortOrder).OrderByDescending(c => c.isFavorite).ToList(); }
sumber