Kod Rangka Kerja Entiti Pertama: Praktik Terbaik Inisialisasi Harta Navigasi
Membangun dengan Kod Kerangka Entiti terlebih dahulu sering menimbulkan persoalan mengenai permulaan sifat navigasi dalam objek CLR lama anda (POCOS). Walaupun sesetengah peguam bela untuk meninggalkan sifat -sifat ini tidak terinisialisasi, yang lain mencadangkan inisialisasi pembina. Artikel ini menjelaskan pendekatan terbaik.
sifat navigasi koleksi: Inisialisasi umumnya tidak perlu
Untuk sifat pengumpulan (mis.,
IList<Order>
Inisialisasi malas boleh mencegah pengecualian rujukan null dan memudahkan ujian. Sebaliknya, menggunakan sifat auto yang dilaksanakan tanpa permulaan meminimumkan kod boilerplate dan memanfaatkan operator null-conditional C#. Walau bagaimanapun, sedar bahawa dengan pemuatan eksplisit, koleksi yang dimulakan boleh merumitkan menentukan jika rangka kerja entiti memuatkan data.
sifat navigasi rujukan: Elakkan inisialisasi
Inisialisasi sifat navigasi rujukan (mis.,
) sangat tidak digalakkan. Menetapkan nilai lalai (seperti objek yang baru, kosong) boleh membawa kepada tingkah laku yang tidak dapat diramalkan.
Customer
Jika diasaskan dalam pembina, rangka kerja entiti tidak akan menimpa nilai -nilai ini semasa pemilihan objek atau pemuatan malas. Ini boleh menyebabkan menjimatkan entiti kosong atau mengganggu pengurusan hubungan.
Pertimbangan teras rangka kerja entiti
Walaupun teras rangka kerja entiti (versi 2.1 dan kemudian) mengendalikan perbaikan hubungan dengan cara yang berbeza dan tidak terjejas secara langsung oleh sifat rujukan yang diasaskan, pemuatan malas masih tidak akan menimpa mereka. Tambahan pula, permulaan boleh mengganggu
pertanyaan dan pembenihan. Include
HasData
Untuk kod rangka kerja entiti optimum pembangunan pertama, elakkan memulakan sifat navigasi rujukan sepenuhnya. Untuk sifat navigasi koleksi, permulaan adalah pilihan berdasarkan keutamaan peribadi dan keperluan projek, tetapi umumnya tidak perlu. Pendekatan ini memastikan tingkah laku dan keserasian yang boleh diramal merentasi versi kerangka entiti.
Atas ialah kandungan terperinci EF Codefirst Navigation Properties: Untuk memulakan atau tidak untuk memulakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!