LINQ kepada Entiti dan Fungsi SQL Tersuai
LINQ kepada Entiti membenarkan pembangun membuat pertanyaan data menggunakan sintaks biasa yang hampir menyerupai SQL. Walau bagaimanapun, operasi tertentu mungkin memerlukan fungsi tersuai yang tidak boleh diterjemahkan terus ke dalam SQL. Dalam kes sedemikian, pembangun mesti mentakrifkan fungsi tersuai dalam fail Model Data Entiti (EDMX) dan melaksanakan kaedah pemadanan dalam kod.
Mentakrifkan Fungsi Tersuai dalam EDMX
Dalam
<Function Name="ParseDouble" ReturnType="Edm.Double"> <Parameter Name="stringvalue" Type="Edm.String" /> <DefiningExpression> cast(stringvalue as Edm.Double) </DefiningExpression> </Function>
Melaksanakan Fungsi Tersuai dalam Kod
Dalam kelas separa yang dijana daripada fail EDMX, melaksanakan kaedah yang sepadan dengan fungsi tersuai yang ditakrifkan dalam EDMX:
using System.Data.Objects.DataClasses; public partial class YourObjectContext { /// <summary> /// This method exists for use in LINQ queries, /// as a stub that will be converted to a SQL CAST statement. /// </summary> [EdmFunction("YourModel", "ParseDouble")] public static double ParseDouble(string stringvalue) { return Double.Parse(stringvalue); } }
Menggunakan Fungsi Tersuai dalam LINQ
Dalam pernyataan LINQ anda, gantikan panggilan fungsi yang sepadan dengan kaedah yang dilaksanakan:
model.Referring = Math.Round(_newSurveyResult.Select(m => string.IsNullOrEmpty(m.Question1) ? 0 : YourObjectContext.ParseDouble(m.Question1)).Average());
Fungsi Pusingan Tersuai
Jika LINQ pernyataan juga termasuk panggilan ke Math.Round, tentukan fungsi tersuai dalam EDMX:
<Function Name="Round" ReturnType="Edm.Double"> <Parameter Name="input" Type="Edm.Double" /> <DefiningExpression> Round(input) </DefiningExpression> </Function>
Pertimbangan Tambahan
Adalah penting untuk merujuk Fungsi Kanonik EDM senarai untuk memastikan fungsi yang dikehendaki dapat diterjemahkan ke dalam SQL. Jika fungsi tidak boleh diterjemahkan, pendekatan yang berbeza, seperti melaksanakan prosedur tersimpan, mungkin diperlukan.
Atas ialah kandungan terperinci Bagaimana untuk Mengintegrasikan Fungsi SQL Tersuai dengan LINQ kepada Entiti?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!