SerializationException при автоматическом создании ViewModel Catel с моделью сущности EF

Когда Catel пытается автоматически создать экземпляр класса ViewModel, принадлежащего представлению, я получаю исключение SerializationException, жалующееся на то, что System.Data.Entity.DynamicProxies не ожидается. Модель представляет собой объект EF 6.1 (наследуется от ModelBase), и я использую Catel 3.9. Как мне предотвратить это?


person Rolfpk    schedule 19.09.2014    source источник


Ответы (1)


Примечание: все это относится к Catel 4.0 (последние предварительные версии, поскольку они стабильны и содержат множество улучшений).

Catel сериализует модель для реализации IEditableObject. При использовании атрибута Model он пытается сериализовать элементы. У вас есть 2 варианта:

  1. Используйте [Model(SupportedIEditableObject = false)] (но вы потеряете функцию «автоматической отмены»
  2. Украсьте неисправные элементы с помощью [ExcludeFromSerialization] или используйте пользовательский модификатор сериализатора.
person Geert van Horrik    schedule 19.09.2014
comment
Большое спасибо за ваш быстрый ответ. Я быстро протестировал вариант 1, и пока он работает нормально. Но что вы имеете в виду под функцией автоматической отмены? - person Rolfpk; 19.09.2014
comment
Автоматическая отмена означает: если вы используете атрибут модели, он сохранит текущие значения. Если вызывается CancelViewModel, изменения в модели автоматически отменяются для вас (с помощью IEditableObject). - person Geert van Horrik; 19.09.2014