linq ke entiti: Membina entiti yang dipetakan dalam pertanyaan
Artikel ini menangani kesilapan umum yang dihadapi ketika cuba memproyeksikan pemilihan tersuai ke entiti yang dipetakan dalam linq ke pertanyaan entiti.
Memahami masalah
ralat "Entiti tidak boleh dibina dalam linq ke pertanyaan entiti" timbul apabila anda cuba membuat contoh baru entiti yang dipetakan (seperti entiti anda) dalam klausa Product
pertanyaan, hanya menggunakan a subset sifatnya. select
Contoh dan Penjelasan:
Pertimbangkan coretan kod ini:
<code class="language-csharp">public IQueryable<product> GetProducts(int categoryID) { return from p in db.Products where p.CategoryID == categoryID select new Product { Name = p.Name }; }</code>
baru yang mengandungi hanya Product
harta. LINQ ke entiti tidak boleh menterjemahkannya secara langsung ke dalam pertanyaan pangkalan data yang cekap kerana ia perlu mengisi semua sifat entiti Name
seperti yang ditakrifkan dalam model data anda. Product
untuk menyelesaikannya, gunakan sama ada jenis tanpa nama atau objek pemindahan data (DTOS):
<code class="language-csharp">public IQueryable GetProducts(int categoryID) { return from p in db.Products where p.CategoryID == categoryID select new { Name = p.Name }; }</code>
. IQueryable
Name
<code class="language-csharp">public class ProductDTO { public string Name { get; set; } // Add other properties as needed } public IQueryable<ProductDTO> GetProducts(int categoryID) { return from p in db.Products where p.CategoryID == categoryID select new ProductDTO { Name = p.Name }; }</code>
Kedua -dua kaedah membenarkan unjuran tersuai yang cekap dalam linq anda ke pertanyaan entiti, mengelakkan ralat asal. Pilih pendekatan yang paling sesuai dengan keperluan projek dan gaya pengekodan projek anda. ProductDTO
Atas ialah kandungan terperinci Kenapa saya tidak dapat membina entiti yang dipetakan di Linq saya untuk pertanyaan entiti?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!