Rumah > pembangunan bahagian belakang > C++ > Mengapa sifat navigasi teras EF Null sehingga akses terus ke entiti yang berkaitan?

Mengapa sifat navigasi teras EF Null sehingga akses terus ke entiti yang berkaitan?

Mary-Kate Olsen
Lepaskan: 2025-01-24 22:16:10
asal
601 orang telah melayarinya

Why Are EF Core Navigation Properties Null Until Direct Access to Related Entities?

EF Core Delay Loading Navigation Atributes

<:> Soalan:

Dalam model Rangka Kerja Entiti (EF Core), atribut navigasi kembali ke nilai kosong sebelum mengakses entiti yang berkaitan secara langsung.

Model:

Soalan pertanyaan:

<code class="language-csharp">public class Mutant
{
    ...
    public virtual OriginalCode OriginalCode { get; set; }
}

public class OriginalCode
{
    ...
    public virtual ICollection<Mutant> Mutants { get; set; }
}</code>
Salin selepas log masuk
Apabila mengambil mutan, atribut navigasi asalCode kosong:

pengisian dinamik hubungan:

tetapi ketika menanyakan entiti asal yang berkaitan:
<code class="language-csharp">var mutants = db.Mutants.ToList();
mutants.ForEach(m => Console.WriteLine(m.OriginalCode == null));
// 输出:所有突变体均为True</code>
Salin selepas log masuk

Atribut Navigasi Kod Asal mutan secara automatik akan mengisi:

Penjelasan:

<code class="language-csharp">var originalCodes = db.OriginalCodes.ToList();</code>
Salin selepas log masuk

Mekanisme pra -muatan Core EF secara automatik akan mengisi atribut navigasi entiti yang berkaitan yang telah dimuatkan pada konteks. Dalam kes kedua, apabila mencari kod asal, mutan yang sepadan juga akan dimuatkan ke dalam konteks, jadi atribut navigasi mereka akan diisi.

<code class="language-csharp">mutants.ForEach(m => Console.WriteLine(m.OriginalCode == null));
// 输出:所有突变体均为False</code>
Salin selepas log masuk
Penyelesaian:

Untuk mengawal tingkah laku ini, kaedah pemuatan eksplisit harus digunakan, seperti pra -load:

atau, untuk mengelakkan pengisian automatik, gunakan contoh DBContext baru atau tiada pertanyaan penjejakan.

kemas kini:

Dalam EF Core v2.1, ia kini menyokong pemuatan kelewatan. Untuk membolehkannya, tandakan atribut navigasi sebagai maya, pasang microsoft.EntityFrameworkcore.Proxies, dan hubungi UseelazyloadingProxies.

Atas ialah kandungan terperinci Mengapa sifat navigasi teras EF Null sehingga akses terus ke entiti yang berkaitan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan