Dalam teras EF, terdapat dua cara untuk memulakan atribut navigasi:
Kaedah 1: Jangan memulakan
Kaedah ini tidak memulakan atribut navigasi di POCO (objek CLR lama biasa):
Kaedah 2: Inisialisasi dalam pembina
<code class="language-csharp">public class User { public int Id { get; set; } public string UserName { get; set; } public virtual ICollection<Address> Addresses { get; set; } public virtual License License { get; set; } }</code>
Kaedah ini memulakan atribut navigasi dalam pembina POCO:
Soalan 1: Kaedah mana yang lebih baik?Untuk atribut pengumpulan (seperti alamat), tidak ada perbezaan dalam fungsi satu dan kaedah dua dalam kaedah satu dan kaedah dua. Inisialisasi tidak menjejaskan logik perniagaan.
<code class="language-csharp">public class User { public User() { this.Addresses = new List<Address>(); //this.License = new License(); //对于引用属性,不建议初始化 } public int Id { get; set; } public string UserName { get; set; } public virtual ICollection<Address> Addresses { get; set; } public virtual License License { get; set; } }</code>
Untuk atribut rujukan (seperti lesen), tidak disyorkan untuk menggunakannya. Ia boleh menyebabkan tingkah laku yang tidak dijangka, seperti entiti kosong atau entiti yang dimuatkan sebahagian untuk disimpan ke dalam pangkalan data. Soalan 2: Bagaimana untuk menentukan arah atribut navigasi?
Dalam hubungan dua jalan antara pengguna dan lesen, jika kedua -dua kelas memulakan atribut navigasi masing -masing, limpahan timbunan mungkin berlaku. Untuk mengelakkan ini, salah satu sifat navigasi harus dikeluarkan (dalam contoh ini, atribut dalam sub -entiti) harus dikeluarkan. Keputusan ini harus berdasarkan peraturan perniagaan dan arahan yang berkaitan.
Kelebihan dan kekurangan dibandingkan dengan
kaedah 1 (bukan inisialisasi):
Kelebihan:
entiti yang menghalang pemeliharaan entiti kosong atau sebahagiannya dimuatkan
Elakkan keabnormalan rujukan kosong mudah untuk melambatkan pemuatan
Kekurangan:
Kelebihan:
Kekurangan:
ia boleh meliputi nilai yang dimuatkan tidak dapat menghalang pembaikan hubungan
Atas ialah kandungan terperinci Untuk memulakan atau tidak untuk memulakan sifat navigasi dalam teras EF: pendekatan mana yang terbaik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!