как обновить часть объекта - PullRequest
0 голосов
/ 30 ноября 2010

Необходимо вставить некоторые данные в БД после вызова каждого метода веб-службы: в начале обработки запроса и в конце.

Я собираюсь вставить запись, которая будет содержать всю информацию о доходахв начале обработки запроса и после этого обновления одна и та же запись, как только запрос обработан и данные готовы к отправке обратно (или произошла ошибка, и мне необходимо сохранить сообщение об ошибке).

Проблема заключается в том, чтоДанные о доходах могут быть довольно длинными, и LINQ To SQL перед обновлением необходимо извлечь данные объекта из БД, а затем «сохранить» их снова.В этом случае «данные о доходах» собираются 3 раза:

  1. 1-й раз при вставке - попадает в БД;
  2. 2-й раз до обновления объекта - выбирается из БД;
  3. 3-й раз при обновлении - он снова собирается в БД.

Есть ли возможность оптимизировать такой процесс, если у меня уже есть объект, извлеченный из БД?

то же самое относится к Entity Framework?Позволяет ли обновлять только часть объекта?

1 Ответ

1 голос
/ 01 декабря 2010

ORM ориентирован на преобразование полных строк в завершенные объекты и обратно - поэтому обновления всегда выполняются для полного объекта.

Однако и Linq-to-SQL, и Entity Framework определенно умныдостаточно, чтобы узнать, какие свойства изменились на объекте, поэтому, если вы обновите только некоторые поля, сгенерированная команда SQL, использующая UPDATE, обновит только эти измененные поля.

Так что в основном: просто попробуйте!Запустите профилировщик SQL и посмотрите, какой SQL идет в базу данных;в Entity Framework я уверен, что если вы измените только некоторые поля, только эти измененные поля будут обновлены в операторе UPDATE и ничего больше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...