Rumah >pangkalan data >tutorial mysql >Mengapakah LINQ ke SQL Melemparkan Ralat 'Sekatan Penggunaan Urutan Tempatan' Apabila Menyertai Koleksi Tempatan?
Ralat LINQ ke SQL: Sekatan Penggunaan Jujukan Setempat
Dalam LINQ ke SQL, pengendali pertanyaan tidak boleh menggunakan jujukan setempat kecuali Contains() pengendali. Ralat ini sering timbul apabila cuba melakukan cantuman antara sumber SQL dan sumber tempatan.
Coretan kod yang disediakan menunjukkan gabungan antara jadual Shop.Sections dan koleksi setempat, obj.SectionObjects. Walau bagaimanapun, operasi ini tidak sah, mengakibatkan ralat: "Jujukan tempatan tidak boleh digunakan dalam LINQ kepada pelaksanaan SQL pengendali pertanyaan kecuali operator Contains()."
Penyelesaian: Pengambilan Data Sebelum Sertai
Untuk menyelesaikan ralat ini, dapatkan semula data SQL ke dalam ingatan sebelum cuba bergabung. Dalam senario ini, kami tidak melakukan gabungan benar tetapi pertanyaan "pilih...di mana...pilih masuk". Ini boleh dicapai menggunakan kaedah Contains():
var SE = Shop.Sections .Where(s => obj.SectionObjects .Select(so => so.SectionId) .Contains(s.SectionId)) .ToList();
Pertanyaan ini diterjemahkan kepada:
select * from Sections where sectionId in (...)
di mana senarai ID dalam klausa in diperoleh daripada koleksi objek setempat . Pendekatan ini memastikan bahawa semua data yang digunakan dalam pertanyaan adalah sebahagian daripada sumber SQL, menyelesaikan ralat.
Atas ialah kandungan terperinci Mengapakah LINQ ke SQL Melemparkan Ralat 'Sekatan Penggunaan Urutan Tempatan' Apabila Menyertai Koleksi Tempatan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!