Нахожу решение:
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 (юридическое лицо)"
когда я пытаюсь обновить объект отсоединения, я могу сделать:
void UpdateObject(Entity e)
{
Entity tmp = ctx.Entities.Where(t=>t.id ==e.id);
ctx.ApplyCurrentValue(e);
ctx.SaveChannges();
}
Теперь у меня есть проект, использующий подход с кодом EF4, и я больше не могу найти метод ApplyCurrentValue.
так как я могу выполнить обновление?
Класс сущности - это очень простой класс
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();
Как мне сделать обновление?