Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Троелсен Эндрю, "Язык программирования C#9 и платформа .NET5" бесплатно, без регистрации.
public string GetString(int i) => throw new NotImplementedException();public decimal GetDecimal(int i) => throw new NotImplementedException();public DateTime GetDateTime(int i) => throw new NotImplementedException();public IDataReader GetData(int i) => throw new NotImplementedException();public bool IsDBNull(int i) => throw new NotImplementedException();object IDataRecord.this[int i] => throw new NotImplementedException();object IDataRecord.this[string name] => throw new NotImplementedException();public void Close() => throw new NotImplementedException();public DataTable GetSchemaTable() => throw new NotImplementedException();public bool NextResult() => throw new NotImplementedException();public int Depth { get; }public bool IsClosed { get; }public int RecordsAffected { get; }Выполнение массового копирования
Добавьте в папку
BulkImportProcessBulkImport.csusingusing System;using System.Collections.Generic;using System.Data;using System.Linq;using Microsoft.Data.SqlClient;Добавьте код для поддержки открытия и закрытия подключений (похожий на код в классе
InventoryDalprivate const string ConnectionString = @"Data Source=.,5433;User Id=sa;Password=P@ssw0rd;Initial Catalog=AutoLot";private static SqlConnection _sqlConnection = null;private static void OpenConnection(){ _sqlConnection = new SqlConnection { ConnectionString = ConnectionString }; _sqlConnection.Open();}private static void CloseConnection(){ if (_sqlConnection?.State != ConnectionState.Closed) { _sqlConnection?.Close(); }}Для обработки записей классу
SqlBulkCopydboSqlBulkCopyDestinationTableNameWriteToServer()ExecuteBulklmport()public static void ExecuteBulkImport<T>(IEnumerable<T> records, string tableName){ OpenConnection(); using SqlConnection conn = _sqlConnection; SqlBulkCopy bc = new SqlBulkCopy(conn) { DestinationTableName = tableName }; var dataReader = new MyDataReader<T>(records.ToList(),_sqlConnection, "dbo",tableName); try { bc.WriteToServer(dataReader); } catch (Exception ex) { // Здесь должно что-то делаться. } finally { CloseConnection(); }}Тестирование массового копирования
Возвратите в проект
AutoLot.ClientProgram.csusingusing AutoLot.Dal.BulkImport;using SystemCollections.Generic;Добавьте в файл
Program.csDoBulkCopy()CarExecuteBulklmport()void DoBulkCopy(){ Console.WriteLine(" ************** Do Bulk Copy ************** "); var cars = new List<Car> { new Car() {Color = "Blue", MakeId = 1, PetName = "MyCar1"}, new Car() {Color = "Red", MakeId = 2, PetName = "MyCar2"}, new Car() {Color = "White", MakeId = 3, PetName = "MyCar3"},