Menentukan DbSets
Saat mengembangkan dengan alur kerja Code First, Anda menentukan DbContext turunan yang mewakili sesi Anda dengan database dan mengekspos DbSet untuk setiap jenis dalam model Anda. Topik ini mencakup berbagai cara Anda dapat menentukan properti DbSet.
DbContext dengan properti DbSet
Kasus umum yang ditunjukkan dalam contoh Kode Pertama adalah memiliki DbContext dengan properti DbSet otomatis publik untuk jenis entitas model Anda. Contohnya:
public class BloggingContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
}
Ketika digunakan dalam mode Kode Pertama, ini akan mengonfigurasi Blog dan Postingan sebagai jenis entitas, serta mengonfigurasi jenis lain yang dapat dijangkau dari ini. Selain itu DbContext akan secara otomatis memanggil setter untuk setiap properti ini untuk mengatur instans DbSet yang sesuai.
DbContext dengan properti IDbSet
Ada situasi, seperti saat membuat tiruan atau palsu, di mana lebih berguna untuk mendeklarasikan properti yang Anda tetapkan menggunakan antarmuka. Dalam kasus seperti itu antarmuka IDbSet dapat digunakan sebagai pengganti DbSet. Contohnya:
public class BloggingContext : DbContext
{
public IDbSet<Blog> Blogs { get; set; }
public IDbSet<Post> Posts { get; set; }
}
Konteks ini bekerja dengan cara yang sama persis dengan konteks yang menggunakan kelas DbSet untuk properti yang ditetapkan.
DbContext dengan properti set baca-saja
Jika Anda tidak ingin mengekspos setter publik untuk properti DbSet atau IDbSet, Anda dapat membuat properti baca-saja dan membuat instans yang ditetapkan sendiri. Contohnya:
public class BloggingContext : DbContext
{
public DbSet<Blog> Blogs
{
get { return Set<Blog>(); }
}
public DbSet<Post> Posts
{
get { return Set<Post>(); }
}
}
Perhatikan bahwa DbContext menyimpan instans DbSet yang dikembalikan dari metode Set sehingga masing-masing properti ini akan mengembalikan instans yang sama setiap kali dipanggil.
Penemuan jenis entitas untuk Code First berfungsi dengan cara yang sama seperti halnya untuk properti dengan getter dan setter publik.