Heim > Backend-Entwicklung > C++ > Wie kann ich Tabellenwertparameter an gespeicherte Prozeduren im Entity Framework übergeben?

Wie kann ich Tabellenwertparameter an gespeicherte Prozeduren im Entity Framework übergeben?

Susan Sarandon
Freigeben: 2025-01-12 22:01:43
Original
325 Leute haben es durchsucht

How Can I Pass Table-Valued Parameters to Stored Procedures in Entity Framework?

Übergabe von Tabellenwertparametern an gespeicherte Prozeduren im Entity Framework

Entity Framework selbst unterstützt die direkte Übergabe von Tabellenwertparametern an gespeicherte Prozeduren nicht nativ. Dies kann jedoch erreicht werden, indem der Befehl ObjectContext mit ExecuteStoreQuery verwendet wird.

Erstellen Sie eine universelle Lagerhaltungsmethode

Definieren Sie zunächst eine allgemeine Lagerhaltungsmethode:

<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>
Nach dem Login kopieren

Verwenden Sie ExecuteStoreQuery mit Tabellenwertparametern

Wenn Sie ExecuteStoreQuery mit Tabellenwertparametern verwenden, setzen Sie das SqlParameter-Attribut von SqlDbType auf Structured und das TypeName-Attribut auf den Namen des benutzerdefinierten Typs:

<code class="language-csharp">var warnings = new SqlParameter("warnings", SqlDbType.Structured);
warnings.Value = dt;
warnings.TypeName = "dbo.udt_Warnings";</code>
Nach dem Login kopieren

Parameter an gespeicherte Prozedur übergeben

Stellen Sie in der ExecuteStoredProcedure-Methode sicher, dass die Parameter in der richtigen Reihenfolge übergeben werden:

<code class="language-csharp">entities.ExecuteStoredProcedure("usp_RaiseWarnings_rs", userId, warnings, caseId);</code>
Nach dem Login kopieren

DbContext und ObjectContext

Für Entity Framework Code First muss DbContext in ObjectContext konvertiert werden, um die ExecuteStoreQuery-Methode zu verwenden:

<code class="language-csharp">var entities = (ObjectContext)context;
entities.ExecuteStoredProcedure("usp_RaiseWarnings_rs", userId, warnings, caseId);</code>
Nach dem Login kopieren

Zusätzliche Hinweise

  • Jede Spalte in der benutzerdefinierten Tabelle muss übergeben werden, auch wenn sie Standardwerte hat.
  • Die an ExecuteStoreCommand übergebenen Parameter müssen in derselben Reihenfolge wie in der gespeicherten Prozedur vorliegen.

Das obige ist der detaillierte Inhalt vonWie kann ich Tabellenwertparameter an gespeicherte Prozeduren im Entity Framework übergeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage