Проблемы с динамическими прокси-серверами EF, когда служба Azure Appfabric Cache используется в качестве поставщика состояния сеанса
Мы пытаемся перенести наше локальное приложение SAAS на Windows Azure, и мы специально использовали множество Entity Framework для модуля. Как часть миграции мы пытаемся выполнить миграцию и тестирование приложения поэтапно. Мы пытаемся использовать службу кэширования приложений Azure в качестве поставщика состояния сеанса.
Когда я пытаюсь настроить состояние сеанса для кэша appfabric, на котором мы работаем, чтобы решить эти проблемы, связанные с платформой Entity, пожалуйста, смотрите ошибку № 2. Сначала мы получили эту ошибку № 1. Для решения этой проблемы у нас есть класс [DataContract] и проблема решена.
ошибка № 1. System.Runtime.Serialization.InvalidDataContractException: тип 'XX.XX.XXX' не может быть сериализован. Попробуйте пометить его атрибутом DataContractAttribute и пометить все его элементы, которые вы хотите сериализовать, атрибутом DataMemberAttribute. Если тип является коллекцией, попробуйте пометить его с помощью CollectionDataContractAttribute. См. Документацию Microsoft .NET Framework для других поддерживаемых типов.
ошибка № 2. Свойство 'AdXXXXXX' для типа 'CaXXXXX_9FDDBE5B2C99F9C5DE2E0DCD2E8CC77D2CB59220D1A3413E91AF5A2B6A23026D' не может быть установлено, поскольку для коллекции уже задана коллекция EntityCollection.
Мы полностью потерялись в том, как исправить эти проблемы, и, когда гуглил пару потоков, говорит, что нам нужно удалить модификатор виртуального доступа для свойств. Но тот же код работает без каких-либо проблем, подобных этой, и код генерируется автоматически EF при каждом обновлении модели. У нас также есть другой вариант перехода к SQLAzure в качестве поставщика состояния сеанса при втором шансе, но мы надеемся, что могут возникнуть такие же проблемы, поскольку данные должны быть сериализованы при хранении в сеансе.
http://social.msdn.microsoft.com/forums/en/adonetefx/thread/99d8d4a1-5ab1-42dc-b9db-5087be02162d http://blog.iannelson.systems/entity-framework-week-part-3-runtime-issues-encountered/
Мы не используем отложенную загрузку, и EF автоматически генерирует классы при обновлении модели из базы данных.
1 ответ
Не могли бы вы попробовать удалить виртуальное ключевое слово из всех свойств, кроме тех, которые вы используете для ленивых свойств загрузки / навигации (то есть: удалить его из всех собственных типов)?
Ссылка: Код Первое добавление в коллекции? Как использовать Code First с репозиториями?