2010-11-30 2 views
0

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

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

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

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

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

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

ответ

1

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

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

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

+0

«Просто попробуй» - хорошая идея :) Собственно я буду! Возможно, мне также понадобится улучшить реализацию моего репозитория, чтобы сохранить уже извлеченные объекты, чтобы предотвратить поездку в БД (пункт № 2 из моего списка выше). Благодаря! – Budda 2010-11-30 23:00:36

Смежные вопросы