mirror of
https://github.com/ppy/osu.git
synced 2025-01-26 19:32:55 +08:00
Add transaction usage for key binding defaults
This commit is contained in:
parent
29fcd210aa
commit
9aa46bfb0d
@ -36,29 +36,31 @@ namespace osu.Game.Input
|
|||||||
|
|
||||||
private void insertDefaults(IEnumerable<KeyBinding> defaults, int? rulesetId = null, int? variant = null)
|
private void insertDefaults(IEnumerable<KeyBinding> defaults, int? rulesetId = null, int? variant = null)
|
||||||
{
|
{
|
||||||
var context = GetContext();
|
using (var context = GetContext())
|
||||||
|
using (var transaction = context.Database.BeginTransaction())
|
||||||
// compare counts in database vs defaults
|
|
||||||
foreach (var group in defaults.GroupBy(k => k.Action))
|
|
||||||
{
|
{
|
||||||
int count = query(context, rulesetId, variant).Count(k => (int)k.Action == (int)group.Key);
|
// compare counts in database vs defaults
|
||||||
int aimCount = group.Count();
|
foreach (var group in defaults.GroupBy(k => k.Action))
|
||||||
|
{
|
||||||
|
int count = query(context, rulesetId, variant).Count(k => (int)k.Action == (int)group.Key);
|
||||||
|
int aimCount = group.Count();
|
||||||
|
|
||||||
if (aimCount <= count)
|
if (aimCount <= count)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
foreach (var insertable in group.Skip(count).Take(aimCount - count))
|
foreach (var insertable in group.Skip(count).Take(aimCount - count))
|
||||||
// insert any defaults which are missing.
|
// insert any defaults which are missing.
|
||||||
context.DatabasedKeyBinding.Add(new DatabasedKeyBinding
|
context.DatabasedKeyBinding.Add(new DatabasedKeyBinding
|
||||||
{
|
{
|
||||||
KeyCombination = insertable.KeyCombination,
|
KeyCombination = insertable.KeyCombination,
|
||||||
Action = insertable.Action,
|
Action = insertable.Action,
|
||||||
RulesetID = rulesetId,
|
RulesetID = rulesetId,
|
||||||
Variant = variant
|
Variant = variant
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
context.SaveChanges(transaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
context.SaveChanges();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
Loading…
Reference in New Issue
Block a user