Короче говоря, одна конкретная запись в одной таблице обновляется, в то время как несколько дополнительных изменений в той же таблице не обновляются.
theStat
обновляется нормально при .SubmitChanges()
statToIncrease
экземплярахобновлять не после SubmitChanges()
После просмотра .GetChangeSet()
выполняется только одно обновление.Почему никакие экземпляры statToIncrease
не обновляются при изменении?Нужно ли открывать новый DataDataContext
для каждого обновления?
Таблица UserStat
1019 * имеет первичный ключ .
Возможно, еще один вопрос
Было бы целесообразно расширить мой класс UserStat с помощью метода, подобного .Add(double amountToAdd)
?Необходимо было бы открыть другое соединение, но это позволило бы мне продолжать использовать только LINQ, верно?
using (DataDataContext db = new DataDataContext())
{
Random r = new Random();
var theStat = db.UserStats.FirstOrDefault();
// tried scoping `statToIncrease` outside of the for loop
// didn't fix anything
UserStat statToIncrease = null;
for (int i = 0; i < vm.stats.Count(); i++)
{
statToIncrease = db.UserStats.Where(s => s.ID == i)
.FirstOrDefault();
// here, .Property is type float
statToIncrease.Property += r.NextDouble();
// here, .Property is type int
theStat.Property -= 1;
}
// create and insert another object
// this object is inserted correctly
// right here, .ChangeSet() only has one insert and one update
// the update is only for `theStat` and not
// any modifications to `statToIncrease`
db.SubmitChanges();
}
Обновление
Я нашел уродливый способделаем это:
db.ExecuteCommand("UPDATE [UserStat] SET [Value] = {0} WHERE [ID] = {1},
statToIncrease.Value + amount, statToIncrease.ID");