Menyelesaikan masalah "Kaedah 'System.String ToString()' Not Recognized" dalam LINQ kepada Entiti
Projek migrasi pangkalan data sering menghadapi ralat "LINQ to Entiti tidak mengenali kaedah 'System.String ToString()' kaedah" yang mengecewakan. Ini berlaku kerana LINQ kepada Entiti tidak dapat menterjemahkan panggilan kaedah ToString()
dalam pertanyaan LINQ anda ke dalam ungkapan serasi pangkalan data. Masalah timbul secara khusus apabila menggunakan ToString()
pada medan rentetan secara langsung dalam pertanyaan LINQ.
Penyelesaian: Pra-proses Penukaran Rentetan
Pembetulan paling mudah ialah mengelak daripada menggunakan ToString()
di dalam pertanyaan LINQ itu sendiri. Sebaliknya, lakukan penukaran rentetan terlebih dahulu, memberikan hasil kepada pembolehubah. Ini memisahkan manipulasi rentetan daripada terjemahan pertanyaan pangkalan data. Contoh:
<code class="language-csharp">string strItem = item.Key.ToString(); IQueryable<entity> pages = from p in context.pages where p.Serial == strItem select p;</code>
Dengan pra-menukar rentetan, ToString()
dilaksanakan sebelum pertanyaan LINQ diterjemahkan kepada SQL, menghalang ralat.
Alternatif: SqlFunctions Rangka Kerja Entiti (Versi Kemudian)
Versi Rangka Kerja Entiti yang lebih baharu menawarkan penyelesaian yang lebih elegan melalui kelas pembantu SqlFunctions
. Kelas ini menyediakan kaedah ToString()
yang direka khusus untuk digunakan dalam pertanyaan LINQ, menghapuskan keperluan untuk pembolehubah sementara. Ini membolehkan kod yang lebih padat dan boleh dibaca.
Atas ialah kandungan terperinci Mengapakah LINQ kepada Entiti Melemparkan Ralat 'Kaedah 'System.String ToString()' Not Recognized' dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!