public async Task SaveTaskStatisticsParametersAsync(TaskStatisticsParameters parameters) { using (var transaction = db.Database.BeginTransaction()) { db.AddOrUpdate(parameters, p => p.TaskId == parameters.TaskId); await db.SaveChangesAsync(); transaction.Commit(); } }
private async Task TrySaveTaskStatisticsParametersAsync(TaskStatisticsParameters parameters) { using (var transaction = await db.Database.BeginTransactionAsync(IsolationLevel.Serializable).ConfigureAwait(false)) { db.AddOrUpdate(parameters, p => p.TaskId == parameters.TaskId); await db.SaveChangesAsync().ConfigureAwait(false); transaction.Commit(); } }
private async Task TrySaveTaskStatisticsParametersAsync(TaskStatisticsParameters parameters) { using (var ts = new TransactionScope(TransactionScopeOption.Required, TimeSpan.FromSeconds(30), TransactionScopeAsyncFlowOption.Enabled)) { db.AddOrUpdate(parameters, p => p.TaskId == parameters.TaskId); await db.SaveChangesAsync().ConfigureAwait(false); ts.Complete(); } }
/* It's very important that SaveTaskStatisticsParametersAsync() works with disabled EF's Change Tracker */ public Task SaveTaskStatisticsParametersAsync(TaskStatisticsParameters parameters, List <TaskStatisticsSourceData> sourceData) { return(FuncUtils.TrySeveralTimesAsync( async() => { await TrySaveTaskStatisticsParametersAsync(parameters, sourceData).ConfigureAwait(false); return true; }, 3, () => Task.Delay(TimeSpan.FromSeconds(1)), typeof(SqlException) )); }
public async Task SaveTaskStatisticsParametersAsync(TaskStatisticsParameters parameters) { await FuncUtils.TrySeveralTimesAsync( async() => { await TrySaveTaskStatisticsParametersAsync(parameters); return(true); }, 3, () => Task.Delay(TimeSpan.FromSeconds(1)), typeof(SqlException) ); }
private async Task TrySaveTaskStatisticsParametersAsync(TaskStatisticsParameters parameters, List <TaskStatisticsSourceData> sourceData) { using (var ts = new TransactionScope(TransactionScopeOption.Required, TimeSpan.FromSeconds(30), TransactionScopeAsyncFlowOption.Enabled)) { await db.TaskStatisticsSourceData .Where(d => d.Submission1.TaskId == parameters.TaskId) .DeleteAsync(); db.AddOrUpdate(parameters, p => p.TaskId == parameters.TaskId); db.TaskStatisticsSourceData.AddRange(sourceData); await db.SaveChangesAsync().ConfigureAwait(false); ts.Complete(); } }
/* It's very important that SaveTaskStatisticsParametersAsync() works with disabled EF's Change Tracker */ public async Task SaveTaskStatisticsParametersAsync(TaskStatisticsParameters parameters, List <TaskStatisticsSourceData> sourceData) { var executionStrategy = new NpgsqlRetryingExecutionStrategy(db, 5); await executionStrategy.ExecuteAsync(async() => { using (var ts = new TransactionScope(TransactionScopeOption.Required, TimeSpan.FromSeconds(30), TransactionScopeAsyncFlowOption.Enabled)) { await db.TaskStatisticsSourceData .Where(d => d.Submission1.TaskId == parameters.TaskId && d.Submission1.Language == parameters.Language) .DeleteAsync(); db.AddOrUpdate(parameters, p => p.TaskId == parameters.TaskId && p.Language == parameters.Language); db.TaskStatisticsSourceData.AddRange(sourceData); await db.SaveChangesAsync().ConfigureAwait(false); ts.Complete(); } }); }
private (double automaticFaintSuspicion, double automaticStrongSuspicion) GetAutomaticSuspicionLevels(TaskStatisticsParameters taskStatisticsParameters) { var faintSuspicionCoefficient = configuration.AntiPlagiarism.StatisticsAnalyzing.FaintSuspicionCoefficient; var strongSuspicionCoefficient = configuration.AntiPlagiarism.StatisticsAnalyzing.StrongSuspicionCoefficient; var minFaintSuspicionLevel = configuration.AntiPlagiarism.StatisticsAnalyzing.MinFaintSuspicionLevel; var minStrongSuspicionLevel = configuration.AntiPlagiarism.StatisticsAnalyzing.MinStrongSuspicionLevel; var maxFaintSuspicionLevel = configuration.AntiPlagiarism.StatisticsAnalyzing.MaxFaintSuspicionLevel; var maxStrongSuspicionLevel = configuration.AntiPlagiarism.StatisticsAnalyzing.MaxStrongSuspicionLevel; var(faintSuspicion, strongSuspicion) = StatisticsParametersFinder.GetSuspicionLevels(taskStatisticsParameters.Mean, taskStatisticsParameters.Deviation, faintSuspicionCoefficient, strongSuspicionCoefficient); var automaticFaintSuspicion = GetSuspicionLevelWithThreshold(faintSuspicion, minFaintSuspicionLevel, maxFaintSuspicionLevel); var automaticStrongSuspicion = GetSuspicionLevelWithThreshold(strongSuspicion, minStrongSuspicionLevel, maxStrongSuspicionLevel); return(automaticFaintSuspicion, automaticStrongSuspicion); }