Rewrite README in plain language, fix repository description

This commit is contained in:
Student 2026-10-05 06:41:31 +05:00
parent 9eb82e44c9
commit 8f381db2cb
3 changed files with 411 additions and 977 deletions

View File

@ -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)} шт.");
}
}

View File

@ -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)
{

1366
README.md

File diff suppressed because it is too large Load Diff