ToString()
Isu Terjemahan KaedahMasalahnya:
Melaksanakan pertanyaan LINQ kepada Entiti yang menggabungkan kaedah ToString()
sering mengakibatkan ralat: "LINQ kepada Entiti tidak mengenali kaedah 'System.String ToString()' dan kaedah ini tidak boleh diterjemahkan ke dalam ungkapan kedai ." Ini berlaku kerana ToString()
tidak boleh diterjemahkan terus ke dalam SQL.
Punca Punca:
Rangka Kerja Entiti (EF) menterjemah pertanyaan LINQ ke dalam SQL untuk pelaksanaan pangkalan data. Memandangkan ToString()
ialah kaedah .NET, bukan fungsi SQL, proses terjemahan gagal.
Penyelesaian:
Penyelesaian yang paling boleh dipercayai adalah untuk mengelak daripada memanggil ToString()
terus dalam pertanyaan LINQ. Sebaliknya, simpan hasil ToString()
dalam pembolehubah sebelum menggunakannya dalam pertanyaan anda. Ini membolehkan EF menterjemah pertanyaan dengan betul.
<code class="language-csharp">string strItem = item.Key.ToString(); IQueryable<entity> pages = from p in context.pages where p.Serial == strItem select p;</code>
Alternatif dalam Teras EF:
Versi EF Core yang lebih baharu menyediakan kaedah SqlFunctions.StringConvert
, menawarkan pendekatan yang lebih langsung untuk penukaran rentetan dalam pertanyaan LINQ, selalunya menghapuskan keperluan untuk pembolehubah sementara. Walau bagaimanapun, pendekatan pembolehubah kekal sebagai penyelesaian yang mantap dan serasi secara meluas.
Atas ialah kandungan terperinci Mengapa LINQ kepada Entiti Gagal Terjemah `ToString()` dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!