[英]How can i update an entity object (detach) in 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”方法。
那么我该如何执行更新操作?
实体类是一个非常简单的类
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();
我该如何进行更新?
回复较晚,但我认为这将对社区有所帮助。 将您的更新方法更改为此
ctx.entities.Attach(entity);
var entry= ctx.Entry(entity);
entry.State = EntityState.Modified;
ctx.SaveChanges();
ApplyChanges方法可能是您所追求的:
model.ApplyChanges("Objects", object);
model.SaveChanges();
object.AcceptChanges();
注意:我们在EF4服务中使用了自我跟踪实体T4模板
也许Attach方法会有所帮助? 请参阅本文以获取更多信息。
void UpdateObject(Entity e) {
Entity tmp = ctx.Entities.Attach(e);
ctx.SaveChannges();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.