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