ИСЭбд-22. Парамонова И.А. Лабораторная работа №2 #3

Closed
ikswi wants to merge 2 commits from LabWork2 into LabWork1
19 changed files with 542 additions and 32 deletions
Showing only changes of commit be215f0672 - Show all commits

View File

@ -4,15 +4,15 @@ public class Ticket
{
public int Id { get; private set; }
public DateTime SaleDate { get; private set; }
public int PassengerId { get; private set; }
public int Passenger_Id { get; private set; }
public IEnumerable<TripTicket> TripTickets { get; private set; } = [];
public static Ticket CreateOperation(int id, int passengerId, IEnumerable<TripTicket> tripTickets)
public static Ticket CreateOperation(int id, int passenger_Id, IEnumerable<TripTicket> tripTickets)
{
return new Ticket
{
Id = id,
SaleDate = DateTime.Now,
PassengerId = passengerId,
Passenger_Id = passenger_Id,
TripTickets = tripTickets
};
}

View File

@ -11,18 +11,18 @@ public class Trip
public int Id { get; private set; }
public DateTime Departure { get; private set; }
public DateTime Arrival { get; private set; }
public int Route { get; private set; }
public int Bus { get; private set; }
public int Route_Id { get; private set; }
public int Bus_Id { get; private set; }
public static Trip CreateOperation(int id, int route, int bus)
public static Trip CreateOperation(int id, int route_Id, int bus_Id)
{
return new Trip
{
Id = id,
Departure = DateTime.Now,
Arrival = DateTime.Now,
Route = route,
Bus = bus
Route_Id = route_Id,
Bus_Id = bus_Id
};
}

View File

@ -9,13 +9,16 @@ namespace ProjectPassengerTransfers.Entities;
public class TripTicket
{
public int Id { get; private set; }
public int TicketId { get; private set; }
public static TripTicket CreateElement(int id, int ticketId)
public int Trip_Id { get; private set; }
public int Count { get; private set; }
public static TripTicket CreateElement(int id, int trip_Id, int count)
{
return new TripTicket
{
Id = id,
TicketId = ticketId
Trip_Id = trip_Id,
Count = count
};
}
}

View File

@ -80,6 +80,7 @@
// numericUpDownDistance
//
numericUpDownDistance.Location = new Point(168, 217);
numericUpDownDistance.Maximum = new decimal(new int[] { 1000, 0, 0, 0 });
numericUpDownDistance.Name = "numericUpDownDistance";
numericUpDownDistance.Size = new Size(150, 27);
numericUpDownDistance.TabIndex = 4;

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Microsoft ResX Schema
Version 2.0
@ -48,7 +48,7 @@
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter

View File

@ -35,6 +35,7 @@
buttonSave = new Button();
buttonCancel = new Button();
ColumnTrip = new DataGridViewComboBoxColumn();
ColumnCount = new DataGridViewTextBoxColumn();
groupBoxTickets.SuspendLayout();
((System.ComponentModel.ISupportInitialize)dataGridViewTickets).BeginInit();
SuspendLayout();
@ -53,7 +54,7 @@
// dataGridViewTickets
//
dataGridViewTickets.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
dataGridViewTickets.Columns.AddRange(new DataGridViewColumn[] { ColumnTrip });
dataGridViewTickets.Columns.AddRange(new DataGridViewColumn[] { ColumnTrip, ColumnCount });
dataGridViewTickets.Dock = DockStyle.Fill;
dataGridViewTickets.Location = new Point(3, 23);
dataGridViewTickets.Name = "dataGridViewTickets";
@ -107,6 +108,13 @@
ColumnTrip.Name = "ColumnTrip";
ColumnTrip.Width = 125;
//
// ColumnCount
//
ColumnCount.HeaderText = "Количество билетов";
ColumnCount.MinimumWidth = 6;
ColumnCount.Name = "ColumnCount";
ColumnCount.Width = 125;
//
// FormTicket
//
AutoScaleDimensions = new SizeF(8F, 20F);
@ -134,5 +142,6 @@
private Button buttonSave;
private Button buttonCancel;
private DataGridViewComboBoxColumn ColumnTrip;
private DataGridViewTextBoxColumn ColumnCount;
}
}

View File

@ -50,11 +50,11 @@ namespace ProjectPassengerTransfers.Forms
var list = new List<TripTicket>();
foreach (DataGridViewRow row in dataGridViewTickets.Rows)
{
if (row.Cells["ColumnFeed"].Value == null)
if (row.Cells["ColumnTrip"].Value == null || row.Cells["ColumnCount"].Value == null)
{
continue;
}
list.Add(TripTicket.CreateElement(0, Convert.ToInt32(row.Cells["ColumnBus"].Value)));
list.Add(TripTicket.CreateElement(0, Convert.ToInt32(row.Cells["ColumnTrip"].Value), Convert.ToInt32(row.Cells["ColumnCount"].Value)));
}
return list;
}

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Microsoft ResX Schema
Version 2.0
@ -48,7 +48,7 @@
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
@ -117,4 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="ColumnCount.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
</root>

View File

@ -1,6 +1,10 @@
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
using ProjectPassengerTransfers.Repositories;
using ProjectPassengerTransfers.Repositories.Implementations;
using Serilog;
using Unity;
using Unity.Microsoft.Logging;
namespace ProjectPassengerTransfers
{
@ -21,13 +25,31 @@ namespace ProjectPassengerTransfers
private static IUnityContainer CreateContainer()
{
var container = new UnityContainer();
container.AddExtension(new LoggingExtension(CreateLoggerFactory()));
container.RegisterType<IBusRepository, BusRepository>();
container.RegisterType<IPassengerRepository, PassengerRepository>();
container.RegisterType<IRouteRepository, RouteRepository>();
container.RegisterType<ITicketRepository, TicketRepository>();
container.RegisterType<ITripRepository, TripRepository>();
container.RegisterType<IConnectionString, ConnectionString>();
return container;
}
private static LoggerFactory CreateLoggerFactory()
{
var loggerFactory = new LoggerFactory();
loggerFactory.AddSerilog(new LoggerConfiguration()
.ReadFrom.Configuration(new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.Build())
.CreateLogger());
return loggerFactory;
}
}
}

View File

@ -10,9 +10,20 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Dapper" Version="2.1.35" />
<PackageReference Include="Microsoft.Extensions.Configuration" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="8.0.1" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="8.0.1" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="Npgsql" Version="9.0.2" />
<PackageReference Include="Serilog" Version="4.2.0" />
<PackageReference Include="Serilog.Extensions.Logging" Version="8.0.0" />
<PackageReference Include="Serilog.Settings.Configuration" Version="8.0.4" />
<PackageReference Include="Serilog.Sinks.File" Version="6.0.0" />
<PackageReference Include="Unity" Version="5.11.10" />
<PackageReference Include="Unity.Abstractions" Version="5.11.7" />
<PackageReference Include="Unity.Container" Version="5.11.11" />
<PackageReference Include="Unity.Microsoft.Logging" Version="5.11.1" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ProjectPassengerTransfers.Repositories;
public interface IConnectionString
{
public string ConnectionString { get; }
}

View File

@ -5,7 +5,7 @@ namespace ProjectPassengerTransfers.Repositories;
public interface ITicketRepository
{
IEnumerable<Ticket> ReadTickets(DateTime? dateForm =
null,int? ticketId = null, int? passengerId = null);
null,int? trip_Id = null, int? passenger_Id = null);
void CreateTicket(Ticket ticket);
void DeleteTicket(int id);

View File

@ -1,25 +1,124 @@
using ProjectPassengerTransfers.Entities;
using Dapper;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using Npgsql;
using ProjectPassengerTransfers.Entities;
using ProjectPassengerTransfers.Entities.Enums;
namespace ProjectPassengerTransfers.Repositories.Implementations;
internal class BusRepository : IBusRepository
{
private readonly IConnectionString _connectionString;
private readonly ILogger<BusRepository> _logger;
public BusRepository(IConnectionString connectionString,
ILogger<BusRepository> logger)
{
_connectionString = connectionString;
_logger = logger;
}
public void CreateBus(Bus bus)
{
_logger.LogInformation("Добавление объекта");
_logger.LogDebug("Объект: {json}",
JsonConvert.SerializeObject(bus));
try
{
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
var queryInsert = @"
INSERT INTO Bus (BusModel, SeatCount)
VALUES (@BusModel, @SeatCount)";
connection.Execute(queryInsert, bus);
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка при добавлении объекта");
throw;
}
}
public void DeleteBus(int id)
{
_logger.LogInformation("Удаление объекта");
_logger.LogDebug("Объект: {id}", id);
try
{
using var connection = new
NpgsqlConnection(_connectionString.ConnectionString);
var queryDelete = @"
DELETE FROM Bus
WHERE Id=@id";
connection.Execute(queryDelete, new { id });
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка при удалении объекта");
throw;
}
}
public Bus ReadBusById(int id)
{
return Bus.CreateEntity(0, BusModel.None, 0);
_logger.LogInformation("Получение объекта по идентификатору");
_logger.LogDebug("Объект: {id}", id);
try
{
using var connection = new
NpgsqlConnection(_connectionString.ConnectionString);
var querySelect = @"
SELECT * FROM Bus
WHERE Id=@Id";
var bus = connection.QueryFirst<Bus>(querySelect,
new { id });
_logger.LogDebug("Найденный объект: {json}",
JsonConvert.SerializeObject(bus));
return bus;
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка при поиске объекта");
throw;
}
}
public IEnumerable<Bus> ReadBuses()
{
return [];
_logger.LogInformation("Получение всех объектов");
try
{
using var connection = new
NpgsqlConnection(_connectionString.ConnectionString);
var querySelect = "SELECT * FROM Bus";
var buses = connection.Query<Bus>(querySelect);
_logger.LogDebug("Полученные объекты: {json}",
JsonConvert.SerializeObject(buses));
return buses;
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка при чтении объектов");
throw;
}
}
public void UpdateBus(Bus bus)
{
_logger.LogInformation("Редактирование объекта");
_logger.LogDebug("Объект: {json}",
JsonConvert.SerializeObject(bus));
try
{
using var connection = new
NpgsqlConnection(_connectionString.ConnectionString);
var queryUpdate = @"
UPDATE Bus
SET
BusModel=@BusModel,
SeatCount=@SeatCount
WHERE Id=@Id";
connection.Execute(queryUpdate, bus);
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка при редактировании объекта");
throw;
}
}
}

View File

@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ProjectPassengerTransfers.Repositories.Implementations;
public class ConnectionString : IConnectionString
{
string IConnectionString.ConnectionString => "Server=localhost, Port=5432; Username=postgres; Password=18820520; Database=otp; Include Error Detail=true";
}

View File

@ -1,25 +1,125 @@
using ProjectPassengerTransfers.Entities;
using Dapper;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using Npgsql;
using ProjectPassengerTransfers.Entities;
using ProjectPassengerTransfers.Entities.Enums;
namespace ProjectPassengerTransfers.Repositories.Implementations;
internal class PassengerRepository : IPassengerRepository
{
private readonly IConnectionString _connectionString;
private readonly ILogger<PassengerRepository> _logger;
public PassengerRepository(IConnectionString connectionString,
ILogger<PassengerRepository> logger)
{
_connectionString = connectionString;
_logger = logger;
}
public void CreatePassenger(Passenger passenger)
{
_logger.LogInformation("Добавление объекта");
_logger.LogDebug("Объект: {json}",
JsonConvert.SerializeObject(passenger));
try
{
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
var queryInsert = @"
INSERT INTO Passenger (PassengerType, Name, Surname)
VALUES (@PassengerType, @Name, @Surname)";
connection.Execute(queryInsert, passenger);
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка при добавлении объекта");
throw;
}
}
public void DeletePassenger(int id)
{
_logger.LogInformation("Удаление объекта");
_logger.LogDebug("Объект: {id}", id);
try
{
using var connection = new
NpgsqlConnection(_connectionString.ConnectionString);
var queryDelete = @"
DELETE FROM Passenger
WHERE Id=@id";
connection.Execute(queryDelete, new { id });
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка при удалении объекта");
throw;
}
}
public Passenger ReadPassengerById(int id)
{
return Passenger.CreateEntity(0, PassengerType.None, string.Empty, string.Empty);
_logger.LogInformation("Получение объекта по идентификатору");
_logger.LogDebug("Объект: {id}", id);
try
{
using var connection = new
NpgsqlConnection(_connectionString.ConnectionString);
var querySelect = @"
SELECT * FROM Passenger
WHERE Id=@id";
var passenger = connection.QueryFirst<Passenger>(querySelect,
new { id });
_logger.LogDebug("Найденный объект: {json}",
JsonConvert.SerializeObject(passenger));
return passenger;
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка при поиске объекта");
throw;
}
}
public IEnumerable<Passenger> ReadPassengers()
{
return [];
_logger.LogInformation("Получение всех объектов");
try
{
using var connection = new
NpgsqlConnection(_connectionString.ConnectionString);
var querySelect = "SELECT * FROM Passenger";
var passengers = connection.Query<Passenger>(querySelect);
_logger.LogDebug("Полученные объекты: {json}",
JsonConvert.SerializeObject(passengers));
return passengers;
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка при чтении объектов");
throw;
}
}
public void UpdatePassenger(Passenger passenger)
{
_logger.LogInformation("Редактирование объекта");
_logger.LogDebug("Объект: {json}",
JsonConvert.SerializeObject(passenger));
try
{
using var connection = new
NpgsqlConnection(_connectionString.ConnectionString);
var queryUpdate = @"
UPDATE Passenger
SET
PassengerType=@PassengerType,
Name=@Name,
Surname=@Surname
WHERE Id=@Id";
connection.Execute(queryUpdate, passenger);
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка при редактировании объекта");
throw;
}
}
}

View File

@ -1,24 +1,119 @@
using ProjectPassengerTransfers.Entities;
using Dapper;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using Npgsql;
using ProjectPassengerTransfers.Entities;
namespace ProjectPassengerTransfers.Repositories.Implementations;
internal class RouteRepository : IRouteRepository
{
private readonly IConnectionString _connectionString;
private readonly ILogger<RouteRepository> _logger;
public RouteRepository(IConnectionString connectionString, ILogger<RouteRepository> logger)
{
_connectionString = connectionString;
_logger = logger;
}
public void CreateRoute(Route route)
{
_logger.LogInformation("Добавление объекта");
_logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(route));
try
{
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
var queryInsert = @"
INSERT INTO Route (Name, DepartureCity, ArrivalCity, Distance)
VALUES (@Name, @DepartureCity, @ArrivalCity, @Distance)";
connection.Execute(queryInsert, route);
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка при добавлении объекта");
throw;
}
}
public void DeleteRoute(int id)
{
_logger.LogInformation("Удаление объекта");
_logger.LogDebug("Объект: {id}", id);
try
{
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
var queryDelete = @"
DELETE FROM Route
WHERE Id=@id";
connection.Execute(queryDelete, new { id });
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка при удалении объекта");
throw;
}
}
public Route ReadRouteById(int id)
{
return Route.CreateEntity(0, string.Empty, string.Empty, string.Empty, 0);
_logger.LogInformation("Получение объекта по идентификатору");
_logger.LogDebug("Объект: {id}", id);
try
{
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
var querySelect = @"
SELECT * FROM Route
WHERE Id=@id";
var route = connection.QueryFirst<Route>(querySelect, new { id });
_logger.LogDebug("Найденный объект: {json}", JsonConvert.SerializeObject(route));
return route;
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка при поиске объекта");
throw;
}
}
public IEnumerable<Route> ReadRoutes()
{
return [];
_logger.LogInformation("Получение всех объектов");
try
{
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
var querySelect = "SELECT * FROM Route";
var routes = connection.Query<Route>(querySelect);
_logger.LogDebug("Полученные объекты: {json}",
JsonConvert.SerializeObject(routes));
return routes;
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка при чтении объектов");
throw;
}
}
public void UpdateRoute(Route route)
{
_logger.LogInformation("Редактирование объекта");
_logger.LogDebug("Объект: {json}",
JsonConvert.SerializeObject(route));
try
{
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
var queryUpdate = @"
UPDATE Route
SET
Name=@Name,
DepartureCity=@DepartureCity,
ArrivalCity=@ArrivalCity,
Distance=@Distance
WHERE Id=@Id";
connection.Execute(queryUpdate, route);
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка при редактировании объекта");
throw;
}
}
}

View File

@ -1,18 +1,100 @@
using ProjectPassengerTransfers.Entities;
using Dapper;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using Npgsql;
using ProjectPassengerTransfers.Entities;
namespace ProjectPassengerTransfers.Repositories.Implementations;
internal class TicketRepository : ITicketRepository
{
private readonly IConnectionString _connectionString;
private readonly ILogger<TicketRepository> _logger;
public TicketRepository(IConnectionString connectionString,
ILogger<TicketRepository> logger)
{
_connectionString = connectionString;
_logger = logger;
}
public void CreateTicket(Ticket ticket)
{
_logger.LogInformation("Добавление объекта");
_logger.LogDebug("Объект: {json}",
JsonConvert.SerializeObject(ticket));
try
{
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
connection.Open();
using var transaction = connection.BeginTransaction();
var queryInsert = @"
INSERT INTO Ticket (Passenger_Id, SaleDate)
VALUES (@Passenger_Id, @SaleDate);
SELECT MAX(Id) FROM Ticket";
var ticketId = connection.QueryFirst<int>(queryInsert, ticket, transaction);
var queryBuyInsert = @"
INSERT INTO Trip_tickets (TicketID, Trip_ID, Count)
VALUES (@TicketID,@Trip_ID, @Count)";
foreach (var elem in ticket.TripTickets)
{
connection.Execute(queryBuyInsert, new
{
ticketId,
elem.Trip_Id,
elem.Count
}, transaction);
}
transaction.Commit();
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка при добавлении объекта");
throw;
}
}
public void DeleteTicket(int id)
{
_logger.LogInformation("Удаление объекта");
_logger.LogDebug("Объект: {id}", id);
try
{
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
connection.Open();
using var transaction = connection.BeginTransaction();
var queryDeleteSub = @"
DELETE FROM Trip_tickets
WHERE TicketId = @id";
connection.Execute(queryDeleteSub, new { id }, transaction);
var queryDelete = @"
DELETE FROM Ticket
WHERE Id = @id";
connection.Execute(queryDelete, new { id }, transaction);
transaction.Commit();
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка при удалении объекта");
throw;
}
}
public IEnumerable<Ticket> ReadTickets(DateTime? dateForm = null, int? ticketId = null, int? passengerId = null)
{
return [];
_logger.LogInformation("Получение всех объектов");
try
{
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
var querySelect = "SELECT * FROM Ticket";
var ticket = connection.Query<Ticket>(querySelect);
_logger.LogDebug("Полученные объекты: {json}", JsonConvert.SerializeObject(ticket));
return ticket;
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка при чтении объектов");
throw;
}
}
}

View File

@ -1,17 +1,63 @@
using ProjectPassengerTransfers.Entities;
using Dapper;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using Npgsql;
using ProjectPassengerTransfers.Entities;
namespace ProjectPassengerTransfers.Repositories.Implementations;
internal class TripRepository : ITripRepository
{
private readonly IConnectionString _connectionString;
private readonly ILogger<TripRepository> _logger;
public TripRepository(IConnectionString connectionString,
ILogger<TripRepository> logger)
{
_connectionString = connectionString;
_logger = logger;
}
public void CreateTrip(Trip trip)
{
_logger.LogInformation("Добавление объекта");
_logger.LogDebug("Объект: {json}",
JsonConvert.SerializeObject(trip));
try
{
using var connection = new
NpgsqlConnection(_connectionString.ConnectionString);
var queryInsert = @"
INSERT INTO Trip (Departure, Arrival, Route_Id, Bus_Id)
VALUES (@Departure, @Arrival, @Route_Id, @Bus_Id)";
connection.Execute(queryInsert, trip);
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка при добавлении объекта");
throw;
}
}
public IEnumerable<Trip> ReadTrips(DateTime? dateForm =
null, DateTime? dateTo = null,
int? tripId = null, int? routeId = null, int? busId = null)
{
return [];
_logger.LogInformation("Получение всех объектов");
try
{
using var connection = new
NpgsqlConnection(_connectionString.ConnectionString);
var querySelect = "SELECT * FROM Trip";
var trips =
connection.Query<Trip>(querySelect);
_logger.LogDebug("Полученные объекты: {json}",
JsonConvert.SerializeObject(trips));
return trips;
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка при чтении объектов");
throw;
}
}
}

View File

@ -0,0 +1,15 @@
{
"Serilog": {
"Using": [ "Serilog.Sinks.File" ],
"MinimumLevel": "Debug",
"WriteTo": [
{
"Name": "File",
"Args": {
"path": "Logs/log.txt",
"rollingInterval": "Day"
}
}
]
}
}