Entity Framework Entity находится в измененном состоянии (и нажмите обновление), хотя влияет на то же значение - PullRequest
0 голосов
/ 23 декабря 2010

Я объясню на примере:

//get an entity
var myEntity context.GetClient(543622);

// imagine this client has already a property myValue=10 
//    (retrieved from the database)
//set again this value
myEntity.myValue = 10;

// then we get the modified for this entity
ObjectStateEntry ose = null;
_context.ObjectStateManager.TryGetObjectStateEntry(myEntity.EntityKey, out ose);

// the ose.EntityState is modified
// and here count = 1 ??!!...
var count = ose.GetModifiedProperties().Count();


//at last a SaveChanges push a commit to the bdd 
//    (tracked with SQL Server Profiler).
_context.SaveChanges();

Кажется, что независимо от того, что вы устанавливаете одно и то же значение для свойства объекта, состояние изменяется на измененное, и обновление помещается в БД.Я удивлен таким поведением ...

Sinn '

1 Ответ

0 голосов
/ 03 января 2011

Кажется нормальным поведением: http://msdn.microsoft.com/en-us/library/bb738695%28v=vs.90%29.aspx

Состояние объекта изменяется с Неизменено на Изменено всякий раз, когда вызывается установщик свойства. Это происходит, даже если устанавливаемое значение совпадает с текущим значением.

Если вы посмотрите на скрытый код свойства сущности, сгенерированного EF:

set
  {
    this.OnNomChanging(value);
    this.ReportPropertyChanging("Nom");
    this._Nom = global::System.Data.Objects.DataClasses.StructuralObject.SetValidValue(value, false);
    this.ReportPropertyChanged("Nom");
    this.OnNomChanged();
  }

Метод ReportPropertyChanged изменяет состояние объекта независимо от того, какое значение / было.

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