Как я могу обновить объект сущности (отсоединить) в EF CF?

Я нашел решение:

MyEntity tmp = ctx.Entities.Where<MyEntity>(t => t.Id == objectWithNewValues.Id).SingleOrDefault();
if (tmp != null)
{
    var entityInDb = ctx.Entry(tmp);
    entityInDb.CurrentValues.SetValues(objectWithNewValues);
    ctx.SaveChanges();
}
else
{
    throw new ArgumentException ...
}

До того, как я использовал EF4, сгенерируйте код из схемы, в контексте будет метод "context.ApplyCurrentValue (entity)"

, когда я пытаюсь обновить отсоединенный объект, я могу сделать:

void UpdateObject(Entity e)
{    
     Entity tmp = ctx.Entities.Where(t=>t.id ==e.id);
     ctx.ApplyCurrentValue(e);
     ctx.SaveChannges();
}

Теперь у меня есть проект, использующий метод первого кода EF4, и я больше не могу найти метод "ApplyCurrentValue".

Итак, как я могу выполнить действие обновления?

Класс Entity - очень простой класс

public class MyEntity
{
    [Key]
    public Guid Id {get;set;}
    ...
}

мой контекст также очень простой класс, наследующий DBContext

public MyContext : DBContext
{
    public DBSet<MyEntity> Entities {get;set}

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<IncludeMetadataConvention>();
        modelBuilder.Entity<MyEntity>().ToTable("tblMyEntity");
    }
}

И я пытаюсь сделать что-то, как показано ниже. но значение не было обновлено в базе данных!

ctx.entities.Attach(entity);
var entityInDb = ctx.Entry(entity);
entityInDb.CurrentValues.SetValues(entity);
context.SaveChanges();

Как мне сделать обновление?

5
задан Mark Pearl 6 January 2014 в 08:28
поделиться