Используйте первый подход. Нет никакого общего преимущества в использовании второго метода с отсоединенной сущностью, наоборот, это может ухудшить ситуацию.
Предположим, вы используете метку времени. Метка времени - это специальный тип БД, представляющий версию строки. Каждый раз, когда запись в базе данных изменяется, отметка времени автоматически увеличивается. Отметка времени используется для одновременных проверок, а при использовании с EF она обрабатывается как столбец Computed
. Каждый раз, когда EF хочет обновить запись, он сравнивает отметку времени в базе данных с отметкой времени, полученной вами при загрузке объекта (должна передаваться в вашей сущности клиенту и обратно). Если временные метки совпадают, запись сохраняется. Если они отличаются, выдается исключение.
Разница между этими двумя методами заключается в том, что первый метод использует метку времени от отдельного объекта, тогда как второй метод использует метку времени от загруженного объекта. Причиной является вычисляемый столбец. Вычисленные значения не могут быть обновлены в приложении.