Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengatasi Sekatan Jenis Tanpa Nama Apabila Menyoal Berbilang Jadual dengan Linq ke SQL?
Linq to SQL: Mengendalikan Pertanyaan Kompleks dan Jenis Tanpa Nama
LINQ to SQL ialah alat yang berkuasa untuk interaksi pangkalan data, tetapi had wujud apabila berurusan dengan set hasil yang kompleks, terutamanya yang melibatkan jenis tanpa nama. Ini sering menjadi jelas apabila menanyakan berbilang jadual.
Pertimbangkan dua jadual: "Anjing" (dengan lajur "Nama," "Umur," "BreedId") dan "Breeds" ("BreedId," "BreedName"). Matlamatnya adalah untuk mendapatkan maklumat anjing bersama-sama dengan nama baka mereka. Pendekatan naif menggunakan gabungan dan unjuran jenis tanpa nama mungkin kelihatan seperti ini:
<code class="language-csharp">var result = from d in db.Dogs join b in db.Breeds on d.BreedId equals b.BreedId select new { Name = d.Name, BreedName = b.BreedName };</code>
Ini gagal kerana LINQ kepada SQL memerlukan jenis boleh peta, yang mana jenis tanpa nama tidak.
Penyelesaian: Kelas Tersuai
Penyelesaian yang disyorkan adalah untuk menentukan kelas tersuai untuk mewakili data gabungan:
<code class="language-csharp">public class DogWithBreed { public Dog Dog { get; set; } public string BreedName { get; set; } }</code>
Pertanyaan kemudian diubah suai untuk mengisi kejadian kelas ini:
<code class="language-csharp">var result = from d in db.Dogs join b in db.Breeds on d.BreedId equals b.BreedId select new DogWithBreed { Dog = d, BreedName = b.BreedName };</code>
Pendekatan ini menawarkan jenis keselamatan dan kebolehlanjutan, membolehkan pengendalian data kompleks yang cekap diambil daripada berbilang jadual, menghapuskan pengehadan yang dikenakan oleh jenis tanpa nama dalam LINQ kepada pertanyaan SQL.
Atas ialah kandungan terperinci Bagaimana untuk Mengatasi Sekatan Jenis Tanpa Nama Apabila Menyoal Berbilang Jadual dengan Linq ke SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!