РИА Сервис / EF.Изменения в поле bool в производном классе не сохраняются в базе данных - PullRequest
3 голосов
/ 27 июля 2011

Мы используем EF с услугами RIA.Простое приложение.Загрузите список предметов, просмотрите / отредактируйте / сохраните.Проблема в том, что некоторые изменения не сохраняются в БД.

У меня есть модель со следующими

Person
   ...
   string Name
   bool IsActive


Customer : Person
   ...
   string Address
   bool IsLocal

Изменения, внесенные в Person, сохраняются правильно.

При изменении значения Customer, если я изменяю значение IsLocal на true, оно сохраняется правильно.Если я изменю его на false, изменение не сохранится в базе данных.

  1. Код, сгенерированный на плате котла, без настроек
  2. Нет сообщений об ошибках.Что касается операции отправки, все прошло хорошо.
  3. Изменения в Address сохраняются правильно
    • Если я изменяю адрес и устанавливаю IsLocal, оба сохраняются правильно.
    • ЕслиЯ изменяю адрес и очищаю IsLocal, адрес сохраняется, но IsLocal остается установленным.
  4. Изменения в IsActive (лично) всегда сохраняются правильно, независимо от того, очищены они или установлены.
  5. Я воссоздал проблему в другом решении с другими таблицами.
    • Кажется, что та же самая проблема, не может очистить поле bool / bit в производном классе.

Любая помощь, которую могут предложить люди, будет оценена.Спасибо,Алан.

1 Ответ

0 голосов
/ 23 мая 2013

Хорошо, у меня есть решение, которое работает для меня ...

Я заменил сгенерированный код для метода Update с:

this.ChangeSet.AttachAsModified( entity, this.ChangeSet.GetOriginal( entity ) );

для

this.ChangeSet.Attach( entity );
this.ObjectContext.ChangeObjectState( entity, EntityState.Modified );

Надеюсь, это поможет!

...