Я работаю над проектом для развлечения и сохраняю текущие GuildId, UserId пользователей, их уровень и текущий Exp.Это работает частично, но, кажется, просто захватывает первый результат только из одного условия.
Я пробовал несколько разных способов выбора элемента из базы данных, но, как мне кажется, это хобби, я 'Я упускаю что-то очень очевидное.Я зарегистрировал свои способы получения UserId и GuildId, и они возвращают правильные значения.
В настоящее время он добавляет новую запись, если она не существует, и будет корректно обновлять Xp, но только для одной записи.Кажется, он игнорирует GuildId и просто находит первую запись, соответствующую UserId, и сохраняет ее там.
public static async Task SaveExp(ulong guildId, ulong userId, int level, uint xp, DateTime cooldown)
{
using (var dbContext = new DatabaseHandler())
{
if (dbContext.Exps.Any(x => x.GuildId == guildId && x.UserId == userId))
{
var current = dbContext.Exps.FirstOrDefault(x => x.GuildId == guildId && x.UserId == userId);
if (current != null)
{
current.Xp += xp;
current.Level += level;
dbContext.Exps.Update(current);
}
}
else
{
dbContext.Exps.Add(new Exp
{
GuildId = guildId,
UserId = userId,
Level = level,
Xp = xp,
Cooldown = cooldown
});
}
await dbContext.SaveChangesAsync();
}
}
Я хочу сохранить Xp в записи, где соблюдаются критерии GuildId и UserId.