Rumah >pangkalan data >tutorial mysql >Mengapakah LINQ ke SQL Melemparkan Ralat 'Sekatan Penggunaan Urutan Tempatan' Apabila Menyertai Koleksi Tempatan?

Mengapakah LINQ ke SQL Melemparkan Ralat 'Sekatan Penggunaan Urutan Tempatan' Apabila Menyertai Koleksi Tempatan?

Linda Hamilton
Linda Hamiltonasal
2024-12-27 21:36:15572semak imbas

Why Does LINQ to SQL Throw a

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!

Kenyataan:
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