Ü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>
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>
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>
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>
Zusätzliche Hinweise
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!