Apakah virtual
kata kunci memiliki efek ketika digunakan pada properti di EF Code First ?. Dapatkah seseorang menggambarkan semua konsekuensinya dalam situasi yang berbeda?
Misalnya, saya tahu ini dapat mengontrol pemuatan malas - jika Anda menggunakan kata kunci virtual pada properti hubungan ICollection / one-to-many, itu akan dimuat secara malas, sedangkan jika Anda membiarkan kata kunci virtual keluar, itu akan bersemangat.
Apa efek lain yang dapat virtual
dimiliki kata kunci dalam EF dengan entitas POCO ?. Haruskah saya menjadikannya default untuk digunakan virtual
di semua properti saya, atau default untuk tidak menggunakannya?
sumber
public virtual byte[] bigData { get; set; }
malas memuat?.Select(a=>new { fields you want })
.Kata kunci virtual ini terkait dengan topik memuat data dari kerangka entitas (lazy loading, eager loading, dan eksplisit loading).
Anda harus menggunakan kata kunci virtual , ketika Anda ingin memuat data dengan pemuatan malas.
lazy loading adalah proses di mana suatu entitas atau kumpulan entitas secara otomatis diambil dari database saat pertama kali diakses.
Misalnya, saat menggunakan kelas entitas Blog yang ditentukan di bawah, Posting terkait akan dimuat saat pertama kali properti navigasi Tulisan diakses:
Pemuatan malas dari koleksi Posting dapat dimatikan dengan membuat properti Posting non-virtual.
jika lazy loading tidak aktif, Memuat koleksi Posts masih dapat dicapai menggunakan eager loading (menggunakan metode Sertakan) atau secara eksplisit memuat entitas terkait (menggunakan metode Load).
Bersemangat memuat:
Memuat secara eksplisit:
sumber
Include()
.