Walaupun Rangka Kerja Entiti tidak menyokong secara langsung parameter bernilai jadual, penyelesaian boleh dilaksanakan menggunakan perintah ObjectContext
. ExecuteStoreQuery
Kaedah pergudangan EF tersuai
Kaedah pergudangan EF generik berikut membolehkan anda melaksanakan prosedur tersimpan yang termasuk parameter bernilai jadual:
<code class="language-csharp">public IEnumerable<T> ExecuteStoredProcedure<T>(string procedureName, params object[] parameters) { StringBuilder command = new StringBuilder(); command.Append("EXEC "); command.Append(procedureName); command.Append(" "); // 为每个参数添加占位符 for (int i = 0; i < parameters.Length; i++) { if (i > 0) command.Append(","); command.Append("{" + i + "}"); } return this.context.ExecuteStoreQuery<T>(command.ToString(), parameters); }</code>
Parameter nilai jadual tersuai
Seperti yang dinyatakan dalam huraian masalah, parameter bernilai jadual memerlukan konfigurasi khusus:Parameter
SqlParameter
SqlDbType
. Structured
TypeName
ExecuteStoreQuery menggunakan parameter bernilai jadual
Kod berikut menunjukkan cara menggunakan untuk menghantar parameter bernilai jadual: ExecuteStoreQuery
<code class="language-csharp">dt.Rows.Add("EO01", 9, 4, 0); dt.Rows.Add("EO00", 9, 4, 0); dt.Rows.Add("EO02", 9, 4, 0); var warnings = new SqlParameter("warnings", SqlDbType.Structured); warnings.Value = dt; warnings.TypeName = "dbo.udt_Warnings"; entities.ExecuteStoredProcedure("usp_RaiseWarnings_rs", userId, warnings, caseId);</code>
Kaedah lanjutan pelaksanaan prosedur tersimpan ObjectContext
Sebagai alternatif, anda boleh membuat kaedah sambungan untuk: ObjectContext
<code class="language-csharp">public static void ExecuteStoredProcedure(this ObjectContext context, string storedProcName, params object[] parameters) { string command = "EXEC " + storedProcName + " @caseid, @userid, @warnings"; context.ExecuteStoreCommand(command, parameters); }</code>
untuk melaksanakan prosedur tersimpan yang mengandungi parameter bernilai jadual. ObjectContext
Keserasian Kod Pertama
Jika menggunakan Kod Rangka Kerja Entiti Pertama, anda boleh mengakses kaedah dengan menukar DbContext
kepada ObjectContext
. Walau bagaimanapun, perpustakaan yang dipanggil EntityFrameworkExtras menyediakan cara yang lebih mudah untuk mengendalikan parameter bernilai jadual dalam persekitaran Kod Pertama. ExecuteStoreQuery
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Parameter Nilai Jadual Prosedur Tersimpan Rangka Kerja Entiti?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!