0
Dans le code suivant, je m'attends à ce que la valeur d'origine soit différente de la nouvelle valeur que j'ai définie. Pourquoi mon test échoue-t-il? J'utilise EF 6.1.0 La valeur d'origine est incorrectement définie sur la nouvelle valeur.Entity Framework Valeur d'origine non conforme
[TestMethod]
public void CheckOriginalAndNew()
{
var dbContext = new ProjectContext();
var proj = dbContext.Projects.Find(1);
proj.Description = Guid.NewGuid().ToString();
DbSet<Project> dbSet = dbContext.Set<Project>();
dbSet.Add(proj);
foreach (var entry in dbContext.ChangeTracker.Entries())
{
entry.State = System.Data.Entity.EntityState.Modified;
}
ObjectContext objectContex = ((IObjectContextAdapter)dbContext).ObjectContext;
objectContex.DetectChanges();
var entries =
objectContex.ObjectStateManager.GetObjectStateEntries(System.Data.Entity.EntityState.Modified);
foreach (ObjectStateEntry entry in entries.Where(e => e.Entity is LoggedEntity && !e.IsRelationship))
{
for (int i = 0; i < entry.CurrentValues.FieldCount; i++)
{
string fieldName = entry.CurrentValues.DataRecordInfo.FieldMetadata[i].FieldType.Name;
int ordinal = entry.OriginalValues.GetOrdinal(fieldName);
if (fieldName == "Description")
{
object newValue = entry.CurrentValues[ordinal];
object oldValue = entry.OriginalValues[ordinal];
Assert.AreNotEqual(newValue, oldValue); // fails! Why?
}
}
}
}