Apabila menggunakan kerangka entiti, pastikan anda menyemak keabnormalan yang mungkin berlaku semasa proses pelaksanaan. Kesalahan biasa ialah "membina entiti di Linq ke pertanyaan entiti", ralat ini berlaku apabila cuba memproyeksikan hasil pertanyaan kepada entiti periferal.
Alasan untuk ralat
dalam serpihan kod yang diberikan, pertanyaan:
Cuba untuk memproyeksikan hasil pertanyaan pada contoh baru entiti produk. Walau bagaimanapun, di Linq ke entiti entiti, entiti tidak boleh dibina atau dibina semula, kerana objek objek diuruskan oleh ORM.
<code class="language-csharp">from p in db.Products where p.CategoryID == categoryID select new Product { Name = p.Name };</code>
Untuk mengatasi kesilapan ini dan lakukan pilihan yang disesuaikan, anda boleh menggunakan jenis tanpa nama atau objek penghantaran data (DTO). Jenis Anonymous adalah jenis penamaan sementara yang dapat menyimpan satu set atribut, sementara DTO adalah kelas tersuai yang menunjukkan objek domain tertentu. Buat DTO
Dalam contoh ini, kerana anda hanya memerlukan atribut nama, anda boleh membuat DTO dengan cara berikut:
Ubah suai pertanyaan untuk diproyeksikan ke DTO
dengan DTO, kini anda boleh mengubah suai pertanyaan untuk memproyeksikannya pada DTO:
<code class="language-csharp">public class ProductDTO { public string Name { get; set; } }</code>
melalui unjuran ke DTO, anda boleh berjaya mendapatkan data dan mengelakkan entiti "membina entiti di linq ke entiti entiti" ralat.
Atas ialah kandungan terperinci Kenapa linq saya ke entiti entiti membuang 'entiti tidak boleh dibina dalam linq ke entiti entiti'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!