/// <inheritdoc /> public async Task <SampleTask> CreateAsync(SampleTask task, CancellationToken token) { _dbContext.Set <SampleTask>().Add(task); await _dbContext.SaveChangesAsync(token); return(task); }
public static void Main() { var s = new SampleTask(); s.RaceConditions(); Console.ReadLine(); }
private async Task ReceiveTasks(CancellationToken token) { using var dbContext = CreateDbContext(); var taskRepo = new TaskRepository(dbContext); try { var receivedTasks = new List <SampleTask>(100); dbContext.Database.BeginTransaction(); await _consumer.Consume <CreateSampleTaskDto>(async (taskDto) => { var task = new SampleTask { Description = taskDto.Description }; var savedTask = await taskRepo.CreateAsync(task, token); receivedTasks.Add(savedTask); }); dbContext.Database.CommitTransaction(); if (receivedTasks.Count > 0) { Console.WriteLine("----------------"); Console.WriteLine("Из очереди прочитаны и сохранены задачи:"); receivedTasks.ForEach(t => { Console.WriteLine($"TaskID: {t.TaskId}, " + $"Description: {t.Description}, " + $"CreateDate: {t.CreateTime.ToLocalTime()}"); }); } } catch (Exception ex) { Console.WriteLine(ex.Message); dbContext.Database.RollbackTransaction(); } }