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; }
Выполнение массового копирования
Добавьте в папку BulkImport
ProcessBulkImport.cs. Поместите в начало файла следующие операторы using:using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using Microsoft.Data.SqlClient;
Добавьте код для поддержки открытия и закрытия подключений (похожий на код в классе InventoryDal
private 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;
}
}
Для обработки записей классу SqlBulkCopy
dbo). После создания нового экземпляра SqlBulkCopy (с передачей объекта подключения) установите свойство DestinationTableName. Затем создайте новый экземпляр специального класса чтения данных, который хранит список объектов, подлежащих массовому копированию, и вызовите метод WriteToServer. Ниже приведен код метода ExecuteBulklmport:public static void ExecuteBulkImport
string tableName)
{
OpenConnection;
using SqlConnection conn = _sqlConnection;
SqlBulkCopy bc = new SqlBulkCopy(conn)
{
DestinationTableName = tableName
};
var dataReader = new MyDataReader
"dbo",tableName);
try
{
bc.WriteToServer(dataReader);
}
catch (Exception ex)
{
// Здесь должно что-то делаться.
}
finally
{
CloseConnection;
}
}
Тестирование массового копирования
Возвратите в проект AutoLot.Client
Program.cs следующие операторы using:using AutoLot.Dal.BulkImport;
using SystemCollections.Generic;
Добавьте в файл Program.cs
DoBulkCopy. Создайте список объектов Car и передайте его вместе с именем таблицы методу ExecuteBulklmport. Оставшаяся часть кода отображает результаты массового копирования.void DoBulkCopy
{
Console.WriteLine(" ************** Do Bulk Copy ************** ");
var cars = new List
{
new Car {Color = "Blue", MakeId = 1, PetName = "MyCar1"},
new Car {Color = "Red", MakeId = 2, PetName = "MyCar2"},
new Car {Color = "White", MakeId = 3, PetName = "MyCar3"},
new Car {Color = "Yellow", MakeId = 4, PetName = "MyCar4"}
};
ProcessBulkImport.ExecuteBulkImport(cars, "Inventory");
InventoryDal dal = new InventoryDal;
List
Console.WriteLine(" ************** All Cars ************** ");
Бьёрн Страуструп , Ирина Сергеевна Козлова , Бьерн Страуструп , Валерий Федорович Альмухаметов
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT