Lazy Loading
Lazy loading suatu data adalah sebuah pattern dimana pengambilan data dari database di tunda sampai benar-benar dibutuhkan. Ini mungkin terdengar seperti hal yang bagus, dan di skenario tertentu, ini akan meningkatkan kinerja aplikasi. Di skenario lain ini akan menurunkan kinerja secara substansial, khususnya pada aplikasi web.
Untuk menggunakan lazy loading, kita harus mengikuti langkah berikut:
Install package
Microsoft.EntityFrameworkCore.Proxies
dotnet add package Microsoft.EntityFrameworkCore.ProxiesGunakan method
UseLazyLoadingProxiessaat mengkonfigurasi dbcontext diStartup.cs:
services.AddDbContext<TodoContext>(options => {
options.UseNpgsql(Configuration.GetConnectionString("Dev"));
options.UseLazyLoadingProxies();
});Ubah semua property navigasi menjadi
virtual:
namespace TodoNetExample.Models
{
public class User : IdentityUser
{
public string Name { get; set; }
public virtual List<TodoList> TodoLists { get; set; }
}
}namespace TodoNetExample.Models
{
public class TodoList
{
public int Id { get; set; }
public string Name { get; set; }
public string UserId { get; set; }
public virtual User User { get; set; }
public virtual List<TodoItem> TodoItems { get; set; }
}
}namespace TodoNetExample.Models
{
public class TodoItem
{
public int Id { get; set; }
public string Name { get; set; }
public int TodoListId { get; set; }
public virtual TodoList TodoList { get; set; }
}
}setelah ini kalian dapat mengakses semua property navigasi ketika dibutuhkan, contohnya pada view detail di TodoList:
@foreach (var item in Model.TodoItems)
{
<li>@item.Name</li>
}link commit github lazy loading: link
Last updated