Обновляет ли EF объекты только потому, что свойство изменяется или только если оно имеет другое значение? - PullRequest
1 голос
/ 29 августа 2010

У меня есть импорт из плоского файла в EDM против SQL Server, где на самом деле изменяется очень мало записей (в который раз выполняется тот же файл импорта), но, тем не менее, вызов SaveChanges для обновления 500 записей занимает довольно много времени. Я предполагаю, что это потому, что я устанавливаю каждое свойство объекта-сущности, а затем EF использует ReportPropertyChanged, чтобы указать, что запись должна быть обновлена ​​в БД.

Должен ли я на самом деле сравнивать все значения свойств импортируемого отчета со значениями свойства сущности и назначать свойству сущности только в том случае, если они различаются, чтобы избежать этих длительных обновлений без изменений?

EDIT: Сгенерированный код для установщика для свойства Обновлено выглядит следующим образом. Я вижу, что назначение является безусловным, поэтому я спрашиваю, является ли фактическая генерация оператора UPDATE для БД условной или нет.

set
{
    OnUpdatedChanging(value);
    ReportPropertyChanging("Updated");
    _Updated = StructuralObject.SetValidValue(value);
    ReportPropertyChanged("Updated");
    OnUpdatedChanged();
}

1 Ответ

2 голосов
/ 29 августа 2010

Используете ли вы сгенерированный код объекта? Он уже проверяет, является ли значение одинаковым:

[EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
[DataMemberAttribute()]
public global::System.Int32 Id
{
    get
    {
        return _Id;
    }
    set
    {
        if (_Id != value)
        {
            OnIdChanging(value);
            ReportPropertyChanging("Id");
            _Id = StructuralObject.SetValidValue(value);
            ReportPropertyChanged("Id");
            OnIdChanged();
        }
    }
}
private global::System.Int32 _Id;
partial void OnIdChanging(global::System.Int32 value);
partial void OnIdChanged();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...