.NET ke SQL Server: Mengoptimumkan Parameter Jadual Prosedur Tertahan
Memindahkan pangkalan data ke SQL Server 2008 sering memerlukan memanfaatkan parameter bernilai jadual dalam prosedur yang disimpan untuk pemindahan data yang cekap. Pendekatan ini meningkatkan prestasi berbanding kaedah yang lebih lama seperti rentetan yang dipisahkan koma, yang kini dianggap ketinggalan zaman.Artikel ini menunjukkan cara lulus data secara berkesan ke prosedur yang disimpan menggunakan
, DataTable
, atau DbDataReader
dalam kod .NET anda. Contoh berikut mempamerkan penggunaan IEnumerable<SqlDataRecord>
dan DataTable
: 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>
ke SqlDbType
dan pemetaan Structured
ke jenis jadual yang sepadan yang ditakrifkan dalam prosedur tersimpan anda (TypeName
dalam contoh ini), anda memastikan penghantaran data yang lancar dan dioptimumkan. Kaedah ini menjamin komunikasi yang cekap dan boleh dipercayai antara aplikasi .NET anda dan prosedur tersimpan SQL Server. dbo.PageViewTableType
Atas ialah kandungan terperinci Bagaimana cara lulus parameter nilai jadual dengan cekap ke prosedur tersimpan SQL Server dari .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!