Вы можете позволить LINQ-to-SQL генерировать операторы обновления:
Foo foo=new Foo { FooId=fooId }; // create obj and set keys
context.Foos.Attach(foo);
foo.Name="test";
context.SubmitChanges();
В вашем Dbml установите UpdateCheck = «Никогда» для всех свойств.
Это приведет к созданию одиночный оператор обновления, не требуя первого выбора.
Одно предупреждение: если вы хотите установить значение NULL, вам придется инициализировать ваш объект foo другим значением, чтобы Linq мог обнаружить изменение :
Foo foo=new Foo { FooId=fooId, Name="###" };
...
foo.Name=null;
Если вы хотите проверить временную метку при обновлении, вы также можете это сделать:
Foo foo=new Foo { FooId=fooId, Modified=... };
// Modified needs to be set to UpdateCheck="Always" in the dbml