Heim >Backend-Entwicklung >C++ >Wie übergeben Sie die Tabellenwertparameter effizient an SQL Server gespeicherte Prozeduren von .NET?
.NET an SQL Server: Optimierung der Parameter des gespeicherten Prozedurtabelle
Migration von Datenbanken in SQL Server 2008 erfordert häufig die Nutzung von Parametern der Tabellen innerhalb gespeicherter Prozeduren für eine effiziente Datenübertragung. Dieser Ansatz verbessert die Leistung über ältere Methoden wie von Kommas getrennte Zeichenfolgen, die jetzt als veraltet gelten.
Dieser Artikel zeigt, wie Daten mit DataTable
, DbDataReader
oder IEnumerable<SqlDataRecord>
in Ihrem .NET -Code effektiv an gespeicherte Prozeduren übergeben werden. Das folgende Beispiel zeigt die Verwendung von DataTable
und IEnumerable<SqlDataRecord>
:
<code class="language-csharp">using System.Data; using System.Data.SqlClient; public class StoredProcedureParameters { public static void ExecuteProcedure(bool useDataTable, string connectionString, IEnumerable<long> ids) { using (var connection = new SqlConnection(connectionString)) { connection.Open(); using (var command = connection.CreateCommand()) { command.CommandText = "dbo.procMergePageView"; command.CommandType = CommandType.StoredProcedure; SqlParameter parameter; if (useDataTable) { parameter = command.Parameters.AddWithValue("@Display", CreateDataTable(ids)); } else { parameter = command.Parameters.AddWithValue("@Display", CreateSqlDataRecords(ids)); } parameter.SqlDbType = SqlDbType.Structured; parameter.TypeName = "dbo.PageViewTableType"; command.ExecuteNonQuery(); } } } private static DataTable CreateDataTable(IEnumerable<long> ids) { var table = new DataTable(); table.Columns.Add("ID", typeof(long)); foreach (var id in ids) { table.Rows.Add(id); } return table; } private static IEnumerable<SqlDataRecord> CreateSqlDataRecords(IEnumerable<long> ids) { var metaData = new SqlMetaData[1]; metaData[0] = new SqlMetaData("ID", SqlDbType.BigInt); var record = new SqlDataRecord(metaData); foreach (var id in ids) { record.SetInt64(0, id); yield return record; } } }</code>
Durch Einstellen von SqlDbType
auf Structured
und zu Mapping TypeName
auf den entsprechenden Tabellentyp, der in Ihrem gespeicherten Prozedur definiert ist (dbo.PageViewTableType
in diesem Beispiel), gewährleisten Sie eine nahtlose und optimierte Datenübertragung. Diese Methode garantiert eine effiziente und zuverlässige Kommunikation zwischen Ihrer .NET -Anwendung und den gespeicherten SQL Server -Verfahren.
Das obige ist der detaillierte Inhalt vonWie übergeben Sie die Tabellenwertparameter effizient an SQL Server gespeicherte Prozeduren von .NET?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!