.NET à SQL Server: Optimisation du paramètre de table de procédure stockée Passage
Les bases de données migrateuses vers SQL Server 2008 nécessitent souvent de tirer parti des paramètres à valeur de la table dans des procédures stockées pour un transfert de données efficace. Cette approche améliore considérablement les performances par rapport aux méthodes plus anciennes comme les chaînes séparées par les virgules, qui sont désormais considérées comme obsolètes.
Cet article montre comment transmettre efficacement les données aux procédures stockées en utilisant DataTable
, DbDataReader
, ou IEnumerable<SqlDataRecord>
dans votre code .NET. L'exemple suivant présente l'utilisation de DataTable
et IEnumerable<SqlDataRecord>
:
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; } } }
En définissant SqlDbType
sur Structured
et en mappant TypeName
au type de table correspondant défini dans votre procédure stockée (dbo.PageViewTableType
dans cet exemple), vous assurez une transmission de données transparente et optimisée. Cette méthode garantit une communication efficace et fiable entre votre application .NET et les procédures stockées SQL Server.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!