Каковы последствия хранения объекта linq2sql в экземпляре рабочего процесса

#workflow-foundation #workflow-foundation-4

#рабочий процесс-основа #рабочий процесс-foundation-4

Вопрос:

Я смог загрузить объекты linq2sql в свой экземпляр службы рабочего процесса и смог без проблем получить доступ к значениям из этих объектов. Однако я заметил, что созданные мной действия рабочего процесса, которые загружали эти объекты, неожиданно вызывались при получении, И мой рабочий процесс не работал должным образом.

Я подозревал, что это проблема с сериализуемостью. Когда я устранил хранилище объектов, но просто сохранил некоторые выбранные «значения» из объекта (простые типы — bool, int), дополнительные вызовы исчезли, и рабочий процесс начал работать должным образом.

Итак, есть идеи о том, почему я мог видеть эти проблемы? Кто-нибудь действительно ЗНАЕТ, было ли это связано с сериализацией или note?

Мысли?

Ответ №1:

Я полагаю, что L2S по умолчанию использует события для отслеживания изменений, поэтому объекты, используемые в рабочем процессе, фактически содержат ссылки на контекстный объект L2S. И при сериализации он попытается сериализовать все это и перезагрузить позже, что не сработает. Лучше всего использовать простые объекты DTO, которые можно безопасно сериализовать и десериализовать как часть состояния рабочего процесса.

Комментарии:

1. Спасибо. Я подозревал, что это будет ответом.