В прошлом году я разработал сервис доступа к данным для нашего проекта, используя Entity Framework (конечно, .NET3.5) и используя книгу Джули Лерхман в качестве руководства, разработавшего отслеживание состояния объектов POCO. Мы используем WCF, а также имеем клиентов Silverlight 3. Мы переходим на .NET 4.0, и я хочу перейти на использование генерации кода, чтобы избежать потери времени разработчиков на написание классов POCO и классов перевода.
В проведенном мною исследовании, кажется, есть 3 способа отслеживания POCO состояний:
1) Изменены отслеживаемые прокси: нам это не кажется полезным, так как кажется, что это не работает при сериализации WCF.
2) На основе снимка: снимок делается, когда извлекается граф сущности POCO, сравнивается возвращенный граф от клиента с этим снимком, а различия сравниваются ... мне кажется, это хорошо.
3) Само-отслеживающиеся объекты: генератор кода генерирует логику для самостоятельного отслеживания в объектах POCO. Это кажется близким к тому, что мы делаем сейчас, за исключением того, что все это создано для нас.
Я пытаюсь выяснить, какие преимущества и недостатки есть у всех этих методов. Я предполагаю, что 1 и 2 «связаны» и что им нужен ObjectContext, из которого изначально запрашивались POCO, чтобы оставаться экземпляром, но не смогли подтвердить это. Я также не вижу причины, по которой кто-то действительно будет беспокоиться о варианте 1, учитывая, что вариант 3, кажется, делает то же самое и даже больше ...
Снимок мне кажется самым простым, но если для этого требуется, чтобы ObjectContext оставался открытым в течение длительного времени, я не уверен ...
Я всего лишь младший программист, поэтому любые советы, особенно в отношении Silverlight 3 (я думаю, варианты 2 и 3 работают с Silverlight 3, но у 2 могут быть проблемы), очень ценятся.