[#82] BaseDataWindow: Fixed error handling after first error to allow saving changes
Test / Run tests (push) Successful in 2m8s
Test / Run tests (push) Successful in 2m8s
This commit is contained in:
@@ -41,25 +41,27 @@ namespace Elwig.Windows {
|
||||
if (!_cultChanged || _cultList == null || _cults == null || _cultIds == null)
|
||||
return;
|
||||
|
||||
// delete
|
||||
var deleteCultIds = _cults.Where(c => c.Value == null).Select(c => c.Key).ToList();
|
||||
await ctx.WineCultivations.Where(c => deleteCultIds.Contains(c.CultId)).ExecuteDeleteAsync();
|
||||
foreach (var (cult, old) in _cultIds) {
|
||||
cult.CultId = old;
|
||||
}
|
||||
foreach (var (old, cultid) in _cults.Where(c => c.Value != null)) {
|
||||
ctx.Update(ctx.WineCultivations.Find(old)!);
|
||||
}
|
||||
await ctx.SaveChangesAsync();
|
||||
|
||||
// update
|
||||
ctx.UpdateRange(_cultList
|
||||
.Where(_cultIds.ContainsKey)
|
||||
.Select(c => {
|
||||
c.CultId = _cultIds[c];
|
||||
ctx.Entry(c).State = EntityState.Added;
|
||||
return c;
|
||||
}));
|
||||
await ctx.SaveChangesAsync();
|
||||
foreach (var (old, cultid) in _cults.Where(c => c.Value != null)) {
|
||||
await ctx.Database.ExecuteSqlAsync($"UPDATE wine_cultivation SET cultid = {cultid} WHERE cultid = {old}");
|
||||
await ctx.Database.ExecuteSqlRawAsync($"UPDATE payment_variant SET data = REPLACE(data, '-{old}\"', '-{cultid}\"')");
|
||||
await ctx.Database.ExecuteSqlAsync($"UPDATE payment_variant SET data = REPLACE(data, {$"-{old}\""}, {$"-{cultid}\""})");
|
||||
}
|
||||
|
||||
foreach (var cult in _cultList.Where(c => !_cultIds.ContainsKey(c))) {
|
||||
if (cult.CultId == null) continue;
|
||||
ctx.Add(cult);
|
||||
}
|
||||
// insert
|
||||
ctx.AddRange(_cultList
|
||||
.Where(c => !_cultIds.ContainsKey(c) && c.CultId != null));
|
||||
await ctx.SaveChangesAsync();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user