System.DayOfWeek enum - ошибки сущностей при сохранении с проблемами KnownType; DevForce 2012

1

DevForce 2012 7.2.2, EF 5, Silverlight, С#, VS2012

Entity свойство типа System.DayOfWeek, ошибка (полное сообщение об ошибках ниже), которое необходимо добавить в список известных типов при попытке обновить/сохранить изменение этого свойства до другого значения. Кажется странным, учитывая, что он перечислим System, и он указан как конкретный пример, который можно использовать в документации DevForce (http://drc.ideablade.com/devforce-2012/bin/view/Documentation/enum-types)

Поэтому я создал IKnownTypeProvider и добавил DayOfWeek в качестве записи:

public class LwKnownTypeProvider : IKnownTypeProvider
{
    public IEnumerable<Type> AddKnownTypes()
    {
        var list = new Type[]
                       {
                           typeof (DayOfWeek)
                       };
        return list;
    }
}

Для удовольствия я также старался быть более конкретным, если бы где-то инструменты путались (замените DayOfWeek на System.DayOfWeek), но это дало те же результаты.

Вещи, которые я проверил:

  • IKnownTypeProvider ли IKnownTypeProvider? Точки прерывания успешно ударяются
  • Это на стороне SL и Server? Да, файл определения класса находится в обоих проектах. Да, он указан в коллекции известных типов (предоставляется var lstKnownTypes = IdeaBlade.EntityModel.KnownTypeHelper.GetServiceKnownTypes(null);)

Наследуемый код, так что, возможно, я что-то пропускаю, но я этого не вижу.

Ошибка сохранения изменений до добавления IKnownTypeProvider:

Тип 'System.DayOfWeek' с именем контракта данных DayOfWeek: http://schemas.datacontract.org/2005/07/system 'не ожидается. Добавьте любые типы, не известные статически в список известных типов - например, с помощью KnownTypeAttribute или путем добавления их в список известных типов, переданных DataContractSerializer

Ошибка после добавления IKnownTypeProvider перечисленных выше:

Formatter thew исключение при попытке десериализации сообщения: при попытке десериализации параметра ideablade.com/EntityModel:workState произошла ошибка. Сообщение InnerException было "Элемент" ideablade.com/EntityModel:OriginalValue "содержит данные от типа, который сопоставляется с именем" http://schemas.datacontract.org/2005/07/System:DayOfWeek ". Deserializer не знает ни одного типа, который сопоставляется с этим именем. Подумайте об использовании DataContractResolver или добавьте тип, соответствующий "DayOfWeek" в список известных типов, например, добавив атрибут KnownTypeAttribute или добавив его в список известных типов, поставленных DataContractSerializer. '. Дополнительную информацию см. В InnerException.

Теги:
devforce
dayofweek
known-types

1 ответ

1
Лучший ответ

По-видимому, это ошибка в том, как обрабатываются типы перечислений во время обновления, когда эти измененные свойства являются частью исходных значений, переданных на сервер. Обходной путь в настоящее время заключается в реализации вашего IKnownTypeProvider как на клиенте, так и на сервере.

  • 1
    Я снова посетил, где я реализовал IKnownTypeProvider, так как он находился в проекте вне модели базы данных. Он был доступен как на стороне клиента, так и на стороне сервера в этом общем ресурсе, но все еще вызывал проблему. Переместив декларации в модельный проект, это, к счастью, решилось само собой. Должно быть, вчера был длинный день, так как я не уверен, почему он не пошел туда с самого начала. Спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню