Я вчера опубликовал этот вопрос , который привел меня к обнаружению огромной проблемы!
У меня есть десятичный столбец в моей базе данных, который называется Units, каждый раз, когда я устанавливаю значение столбца в NON ZERO, и SubmitChanges обновляет столбец с новым значением. Если я пытаюсь установить значение столбца в ноль, SubmitChanges не обновляет столбец.
data.Units = this.ReadProperty<decimal>(UnitsProperty);
data.UnitPrice = this.ReadProperty<decimal>(UnitPriceProperty);
data.Price = this.ReadProperty<decimal>(PriceProperty);
Я посмотрел журнал DataContext и вижу, что поле со значением ZERO не включено в запрос. Даже если я попытаюсь жестко закодировать изменение, Linq игнорирует его.
data.Units = 0;
data.UnitPrice = 0;
data.Price = 0;
Само собой разумеется, это убивает меня! Есть идеи, почему это происходит?
Решение
Я выяснил свою проблему с помощью SO-сообщества. Моя проблема была вызвана тем фактом, что когда я создавал объект для присоединения, значение столбца по умолчанию было установлено равным нулю, поэтому, когда он пытался присвоить значение нулю ... LinqToSql говорит: "эй ... ничего не изменилось Я не обновляю значение.
То, что я делаю сейчас ... просто, чтобы заставить его работать, следующее:
ctx.DataContext.InvoiceItems.Attach(data, true);
Кажется, это заставляет все значения записывать себя в базу данных. Пока это работает.