Kerangka Kerja Entitas - Pemuatan Eksplisit
Jika Anda menonaktifkan pemuatan lambat, pemuatan lambat entitas terkait masih mungkin dilakukan, tetapi harus dilakukan dengan panggilan eksplisit.
Tidak seperti lazy loading, tidak ada ambiguitas atau kemungkinan kebingungan terkait kapan kueri dijalankan.
Untuk melakukannya, Anda menggunakan metode Muat pada entri entitas terkait.
Untuk hubungan satu-ke-banyak, panggil metode Muat di Koleksi.
Dan untuk hubungan satu-ke-satu, panggil metode Load on Reference.
Mari kita lihat contoh berikut di mana lazy loading dinonaktifkan dan kemudian siswa yang nama depannya adalah Ali diambil.
Informasi siswa kemudian ditulis di konsol. Jika Anda melihat kodenya, informasi pendaftaran juga tertulis tetapi entitas Pendaftaran belum dimuat sehingga foreach loop tidak akan dijalankan.
Setelah entitas Pendaftaran dimuat secara eksplisit sekarang informasi siswa dan informasi pendaftaran akan ditulis di jendela konsol.
class Program {
static void Main(string[] args) {
using (var context = new UniContextEntities()) {
context.Configuration.LazyLoadingEnabled = false;
var student = (from s in context.Students where s.FirstMidName ==
"Ali" select s).FirstOrDefault<Student>();
string name = student.FirstMidName + " " + student.LastName;
Console.WriteLine("ID: {0}, Name: {1}", student.ID, name);
foreach (var enrollment in student.Enrollments) {
Console.WriteLine("Enrollment ID: {0}, Course ID: {1}",
enrollment.EnrollmentID, enrollment.CourseID);
}
Console.WriteLine();
Console.WriteLine("Explicitly loaded Enrollments");
Console.WriteLine();
context.Entry(student).Collection(s ⇒ s.Enrollments).Load();
Console.WriteLine("ID: {0}, Name: {1}", student.ID, name);
foreach (var enrollment in student.Enrollments) {
Console.WriteLine("Enrollment ID: {0}, Course ID: {1}",
enrollment.EnrollmentID, enrollment.CourseID);
}
Console.ReadKey();
}
}
}
Ketika contoh di atas dijalankan, Anda akan menerima output berikut. Pertama-tama, hanya informasi siswa yang ditampilkan dan setelah memuat entitas pendaftaran secara eksplisit, informasi siswa dan pendaftaran terkaitnya akan ditampilkan.
ID: 1, Name: Ali Alexander
Explicitly loaded Enrollments
ID: 1, Name: Ali Alexander
Enrollment ID: 1, Course ID: 1050
Enrollment ID: 2, Course ID: 4022
Enrollment ID: 3, Course ID: 4041
Kami menyarankan Anda untuk menjalankan contoh di atas dengan cara langkah demi langkah untuk pemahaman yang lebih baik.