Rewrite README in plain language, fix repository description
This commit is contained in:
parent
9eb82e44c9
commit
8f381db2cb
|
|
@ -94,7 +94,7 @@ public class OrderRepository
|
|||
// Первая позиция списывается успешно, на второй специально выбрасывается
|
||||
// ошибка. В результате БД не меняется вообще: остатки возвращаются
|
||||
// к прежнему значению, а заказ не создаётся.
|
||||
// Метод возвращает текст описания случившимся — для вывода в консоль.
|
||||
// Метод возвращает текст описания случившимся - для вывода в консоль.
|
||||
public async Task<string> CreateOrderWithRollbackDemoAsync(int customerId)
|
||||
{
|
||||
await using var connection = _connectionFactory.CreateConnection();
|
||||
|
|
@ -123,7 +123,7 @@ public class OrderRepository
|
|||
var report = new List<string>();
|
||||
report.Add("Остатки ДО операции:");
|
||||
foreach (var it in demoItems)
|
||||
report.Add($" [{it.Id}] {it.Name} — было {it.Stock} шт.");
|
||||
report.Add($" [{it.Id}] {it.Name} - было {it.Stock} шт.");
|
||||
|
||||
await using var transaction = (SqlTransaction)await connection.BeginTransactionAsync();
|
||||
|
||||
|
|
@ -146,12 +146,12 @@ public class OrderRepository
|
|||
await orderCommand.ExecuteNonQueryAsync();
|
||||
}
|
||||
|
||||
// Шаг 2. Списываем первую позицию — это успешно
|
||||
// Шаг 2. Списываем первую позицию - это успешно
|
||||
await DeductStockAsync(connection, transaction, demoItems[0].Id, 2);
|
||||
|
||||
report.Add($"Списание товара [{demoItems[0].Id}] {demoItems[0].Name} - 2 шт. прошло успешно.");
|
||||
report.Add("Но тут приложение «падает» (искусственная ошибка).");
|
||||
report.Add("Вызывается Rollback — все изменения выше отменяются:");
|
||||
report.Add("Вызывается Rollback - все изменения выше отменяются:");
|
||||
|
||||
// Шаг 3. Искусственная ошибка внутри транзакции
|
||||
throw new InvalidOperationException("Искусственная ошибка при обработке второй позиции заказа");
|
||||
|
|
@ -164,7 +164,7 @@ public class OrderRepository
|
|||
report.Add("Выполнен transaction.RollbackAsync().");
|
||||
}
|
||||
|
||||
// Читаем остатки ПОСЛЕ отката — база вернулась в исходное состояние
|
||||
// Читаем остатки ПОСЛЕ отката - база вернулась в исходное состояние
|
||||
string checkSql = @"
|
||||
SELECT Id, Name, StockQuantity
|
||||
FROM Products
|
||||
|
|
@ -179,7 +179,7 @@ public class OrderRepository
|
|||
{
|
||||
while (await checkReader.ReadAsync())
|
||||
{
|
||||
report.Add($" [{checkReader.GetInt32(0)}] {checkReader.GetString(1)} — стало {checkReader.GetInt32(2)} шт.");
|
||||
report.Add($" [{checkReader.GetInt32(0)}] {checkReader.GetString(1)} - стало {checkReader.GetInt32(2)} шт.");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ class Program
|
|||
|
||||
var input = Console.ReadLine();
|
||||
|
||||
// Ввод закрыт (например, перенаправлен и закончился) — выходим из программы,
|
||||
// Ввод закрыт (например, перенаправлен и закончился) - выходим из программы,
|
||||
// иначе цикл меню будет крутиться бесконечно.
|
||||
if (input is null)
|
||||
{
|
||||
|
|
@ -128,7 +128,7 @@ var input = Console.ReadLine();
|
|||
}
|
||||
|
||||
// Очистка экрана. Console.Clear() не работает, если вывод перенаправлен
|
||||
// (например, при запуске через管道 или в CI) — в этом случае просто пропускаем её.
|
||||
// (например, при запуске через管道 или в CI) - в этом случае просто пропускаем её.
|
||||
private static void ClearConsole()
|
||||
{
|
||||
try
|
||||
|
|
@ -137,7 +137,7 @@ var input = Console.ReadLine();
|
|||
}
|
||||
catch (IOException)
|
||||
{
|
||||
// Консоли нет — ничего не очищаем
|
||||
// Консоли нет - ничего не очищаем
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -359,7 +359,7 @@ var input = Console.ReadLine();
|
|||
Console.WriteLine($"Процедура вернула товаров: {products.Count}");
|
||||
foreach (var p in products)
|
||||
{
|
||||
Console.WriteLine($" [{p.Id}] {p.Name} — {p.Price:C} (остаток: {p.StockQuantity})");
|
||||
Console.WriteLine($" [{p.Id}] {p.Name} - {p.Price:C} (остаток: {p.StockQuantity})");
|
||||
}
|
||||
|
||||
if (products.Count == 0)
|
||||
|
|
@ -385,7 +385,7 @@ var input = Console.ReadLine();
|
|||
}
|
||||
|
||||
// Наглядная демонстрация отката транзакции (Rollback).
|
||||
// Первая позиция списывается успешно, затем происходит ошибка —
|
||||
// Первая позиция списывается успешно, затем происходит ошибка -
|
||||
// и вся транзакция отменяется. Остатки в базе не меняются.
|
||||
private static async Task DemoRollback(ShopService service)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user