Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Melaksanakan Parameter Nilai Jadual Prosedur Tersimpan Rangka Kerja Entiti?

Bagaimana untuk Melaksanakan Parameter Nilai Jadual Prosedur Tersimpan Rangka Kerja Entiti?

Mary-Kate Olsen
Lepaskan: 2025-01-12 21:57:44
asal
313 orang telah melayarinya

How to Implement Entity Framework's Stored Procedure Table Value Parameters?

Kaedah pelaksanaan parameter nilai jadual prosedur disimpan Rangka Kerja Entiti

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>
Salin selepas log masuk

Parameter nilai jadual tersuai

Seperti yang dinyatakan dalam huraian masalah, parameter bernilai jadual memerlukan konfigurasi khusus:

Parameter
    mestilah daripada jenis
  • . SqlParameter
  • mesti ditetapkan kepada SqlDbType. Structured
  • mesti ditetapkan kepada nama jenis yang ditentukan pengguna. 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>
Salin selepas log masuk

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>
Salin selepas log masuk
Kaedah ini membolehkan anda menggunakan terus

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan