Вам необходимо установить UpdateCheck для всех свойств класса Article, кроме первичного ключа (щелкните свойство класса в конструкторе LINQ2SQL и переключитесь в окно «Свойства инструмента») в значение «Никогда» (не уверен насчет WhenChanged, возможно, это тоже работает - продолжайте. и экспериментируй с этим!).
Это заставит LINQ2SQL использовать
UPDATE ... SET ... WHERE ID = @2
вместо длинной версии со всеми столбцами в предложении WHERE:
UPDATE ... SET ... WHERE ID = @2 AND ItemsInStock = @1 AND SomeOtherColumn = @3 AND...
Теперь вы можете использовать код как
context.Articles.Attach(article /* article with updated values */, new Article { ID = articleID, ItemsInStock = -1 } /* pretend that this is the original article */);
context.SubmitChanges();
По сути, вы указываете, что изменилось только свойство ItemsInStock - другие реквизиты должны иметь то же значение по умолчанию, конечно же, articleID.
ПРИМЕЧАНИЕ: вам не нужно загружать статью до этого.