Обновлять только обновленные поля в Entity Framework - PullRequest
2 голосов
/ 13 сентября 2010

Довольно распространенный вариант использования, по-видимому, когда повторное заполнение объекта из формы должно идти

myobj.Name = "textbox value";
myobj.Content = "textbox content";

Но имя, возможно, не изменилось, это может быть только изменение текстового поля содержимого.

Проблема в том, что структура сущностей обрабатывает Имя как измененное только потому, что я установил его значение, независимо от того, установил ли я точно такое же значение или нет.

В идеале, я бы хотел, чтобы EF отмечал вещи как измененные, если они действительно изменились. Возможно ли это?

1 Ответ

2 голосов
/ 13 сентября 2010

Какую версию EF вы используете?

Попробуйте это - перейдите к определению свойства Name в сущности и посмотрите, есть ли у него проверка в его установщике, например:

set
{
    if (Name != value)
    ...
}

Если этого не произойдет, измените шаблоны t4 (если вы используете EF 4.0) и добавьте вручную.

В противном случае, я не думаю, что есть дешевый способ «изменить» измененное свойство.

Редактировать. Чтобы создать T4 из существующей модели, щелкните правой кнопкой мыши модель, выберите Add code generation items и выберите EntityObject generator.Это создаст файл tt, который вы сможете запустить, выполнив команду сохранения (вы получите приглашение, если хотите разрешить его запуск).При сохранении он сгенерирует файл, точно такой же, как файл, сгенерированный моделью edmx.Теперь вам просто нужно найти часть, где он генерирует свойство set.На первый взгляд, tt может быть пугающим, но он действительно окупается, изучая его ... есть расширение для раскрашивания текста t4 - вы можете найти его в менеджере расширений, и это бесплатно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...