Heim > Backend-Entwicklung > C++ > Wie implementiert man die Wertparameter der gespeicherten Prozedurtabelle von Entity Framework?

Wie implementiert man die Wertparameter der gespeicherten Prozedurtabelle von Entity Framework?

Mary-Kate Olsen
Freigeben: 2025-01-12 21:57:44
Original
313 Leute haben es durchsucht

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

Entity Framework-Implementierungsmethode für gespeicherte Prozedurtabellenwertparameter

Während Entity Framework die Übergabe von Tabellenwertparametern nicht direkt unterstützt, kann mit dem Befehl ObjectContext eine Problemumgehung implementiert werden. ExecuteStoreQuery

Maßgeschneiderte EF-Lagerhaltungsmethode

Mit den folgenden generischen EF-Warehousing-Methoden können Sie gespeicherte Prozeduren ausführen, die Tabellenwertparameter enthalten:

<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

Benutzerdefinierte Tabellenwertparameter

Wie in der Problembeschreibung erwähnt, erfordern Tabellenwertparameter eine spezifische Konfiguration:

Der Parameter
    muss vom Typ
  • sein. SqlParameter
  • muss auf SqlDbType gesetzt sein. Structured
  • muss auf den Namen des benutzerdefinierten Typs gesetzt werden. TypeName

ExecuteStoreQuery mit Tabellenwertparametern

Der folgende Code zeigt, wie

zum Übergeben von Tabellenwertparametern verwendet wird: 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>
Nach dem Login kopieren

Die Ausführungserweiterungsmethode für gespeicherte Prozeduren von ObjectContext

Alternativ können Sie eine Erweiterungsmethode für

erstellen: 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>
Nach dem Login kopieren
Mit dieser Methode können Sie

direkt verwenden, um eine gespeicherte Prozedur auszuführen, die Tabellenwertparameter enthält. ObjectContext

Code First-Kompatibilität

Wenn Sie Entity Framework Code First verwenden, können Sie auf die

-Methode zugreifen, indem Sie DbContext in ObjectContext konvertieren. Eine Bibliothek namens EntityFrameworkExtras bietet jedoch eine bequemere Möglichkeit, Tabellenwertparameter in einer Code First-Umgebung zu verarbeiten. ExecuteStoreQuery

Das obige ist der detaillierte Inhalt vonWie implementiert man die Wertparameter der gespeicherten Prozedurtabelle von Entity Framework?. 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