Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Melewati Parameter Bernilai Jadual kepada Prosedur Tersimpan dalam Rangka Kerja Entiti?
Melalukan parameter bernilai jadual kepada prosedur yang disimpan dalam Rangka Kerja Entiti
Rangka Kerja Entiti sendiri secara asalnya tidak menyokong menghantar parameter bernilai jadual terus kepada prosedur yang disimpan. Walau bagaimanapun, ini boleh dicapai dengan menggunakan perintah ObjectContext
dengan ExecuteStoreQuery
.
Buat kaedah pergudangan universal
Pertama, tentukan kaedah pergudangan am:
<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>
Gunakan ExecuteStoreQuery dengan parameter bernilai jadual
Apabila menggunakan ExecuteStoreQuery
dengan parameter bernilai jadual, tetapkan atribut SqlParameter
SqlDbType
kepada Structured
dan atribut TypeName
kepada nama jenis yang ditentukan pengguna:
<code class="language-csharp">var warnings = new SqlParameter("warnings", SqlDbType.Structured); warnings.Value = dt; warnings.TypeName = "dbo.udt_Warnings";</code>
Lepaskan parameter ke prosedur tersimpan
Dalam kaedah ExecuteStoredProcedure
, pastikan parameter dihantar dalam susunan yang betul:
<code class="language-csharp">entities.ExecuteStoredProcedure("usp_RaiseWarnings_rs", userId, warnings, caseId);</code>
DbContext dan ObjectContext
Untuk Kod Rangka Kerja Entiti Pertama, DbContext
perlu ditukar kepada ObjectContext
untuk menggunakan kaedah ExecuteStoreQuery
:
<code class="language-csharp">var entities = (ObjectContext)context; entities.ExecuteStoredProcedure("usp_RaiseWarnings_rs", userId, warnings, caseId);</code>
Nota Tambahan
ExecuteStoreCommand
mestilah dalam susunan yang sama seperti dalam prosedur yang disimpan. Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melewati Parameter Bernilai Jadual kepada Prosedur Tersimpan dalam Rangka Kerja Entiti?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!