Мы используем службу данных WCF, чтобы бронировать нашу сторону сервера данных и предоставлять сторонним пользователям простой доступ к данным OData. Серверная сторона вещей была относительно простой. С другой стороны, клиентская сторона дает нам возможность.Услуги передачи данных WCF: обработка объекта во время сбережения
Мы переходим от обычной структуры Entity Framework к службам данных, и мы создали сборку, которая содержит сгенерированные объекты-клиенты, которые общаются с службой данных (через ссылку на службу). Эти классы являются частичными, поэтому мы добавили к ним некоторые логические и расширенные свойства. Все это прекрасно работает.
Проблема, с которой мы сталкиваемся, заключается в том, что нам нужно обрабатывать наши объекты в экономичное время, потому что им необходимо выполнить некоторую расширенную сериализацию до того, как они будут отправлены по проводу. Класс DataServiceContext содержит два события: WritingEntity и ReadingEntity. Событие ReadingEntity на самом деле происходит в нужное время для нас (десериализация дескриптора объекта). Событие WritingEntity происходит в WRONG для нас (после сериализации после объекта).
Есть ли способ поймать объект, прежде чем он будет записан в запрос, чтобы мы могли вызвать метод для объекта, который должен быть написан?
Очевидно, мы могли бы просто прокрутить список сущностей, ища любую сущность, которая не находится в состоянии неизменной или удаленной, и вызвать соответствующий метод там ... но это потребует от меня добавления специального кода каждый раз, когда я хотел вызвать SaveChanges в контексте. Это может быть то, что нам нужно сделать, но было бы неплохо, если бы был способ поймать объекты до того, как они будут записаны в XML для отправки в службу.