Язык программирования C#9 и платформа .NET5 - Джепикс Филипп - Страница 395
- Предыдущая
- 395/642
- Следующая
Изменить размер шрифта:
395
namespace AuoLot.Dal.DataOperations{ public class InventoryDal { private readonly string _connectionString; public InventoryDal() : this( @"Data Source=.,5433;User Id=sa;Password=P@ssw0rd; Initial Catalog=AutoLot") { } public InventoryDal(string connectionString) => _connectionString = connectionString; }}Открытие и закрытие подключения
Добавьте переменную уровня класса, которая будет хранить подключение, применяемое кодом доступа к данным. Добавьте также два метода: один для открытия подключения
(OpenConnection()CloseConnection()CloseConnection()Close()private SqlConnection _sqlConnection = null;private void OpenConnection(){ _sqlConnection = new SqlConnection { ConnectionString = _connectionString }; _sqlConnection.Open();}private void CloseConnection(){ if (_sqlConnection?.State != ConnectionState.Closed) { _sqlConnection?.Close(); }}Ради краткости в большинстве методов класса
InventoryDaltry/catchДобавление реализации IDisposable
Добавьте к определению класса интерфейс
IDisposablepublic class InventoryDal : IDisposable{ ...}Затем реализуйте шаблон освобождения, вызывая
Dispose()SqlConnectionbool _disposed = false;protected virtual void Dispose(bool disposing){ if (_disposed) { return; } if (disposing) { _sqlConnection.Dispose(); } _disposed = true;}public void Dispose(){ Dispose(true); GC.SuppressFinalize(this);}Добавление методов выборки
Для начала объедините имеющиеся сведения об объектах команд, чтения данных и обобщенных коллекциях, чтобы получить записи из таблицы
InventoryRead()CommandBehaviorDataReaderGetAllInventory()List<CarViewModel>Inventorypublic List<CarViewModel> GetAllInventory(){ OpenConnection(); // Здесь будут храниться записи. List<CarViewModel> inventory = new List<CarViewModel>(); // Подготовить объект команды. string sql = @"SELECT i.Id, i.Color, i.PetName,m.Name as Make FROM Inventory i INNER JOIN Makes m on m.Id = i.MakeId"; using SqlCommand command = new SqlCommand(sql, _sqlConnection) { CommandType = CommandType.Text }; command.CommandType = CommandType.Text; SqlDataReader dataReader = command.ExecuteReader(CommandBehavior.CloseConnection); while (dataReader.Read())
395
- Предыдущая
- 395/642
- Следующая
Перейти на страницу:
