【发布时间】:2011-04-04 07:14:17
【问题描述】:
我找到了解决办法:
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”方法了。
那么我该如何进行更新操作呢?
实体类是一个非常简单的类
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();
如何进行更新?
【问题讨论】:
标签: c# entity-framework ef-code-first detach