gpt4 book ai didi

c# - 我如何更新 EF CF 中的实体对象(分离)?

转载 作者:太空狗 更新时间:2023-10-29 23:10:46 24 4
gpt4 key购买 nike

我找到了解决方案:

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 之前,从模式生成代码,上下文将有一个方法“上下文。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();

如何进行更新?

最佳答案

回复晚了,但我认为这会对社区有所帮助。将您的更新方法更改为此

ctx.entities.Attach(entity);
var entry= ctx.Entry(entity);
entry.State = EntityState.Modified;
ctx.SaveChanges();

关于c# - 我如何更新 EF CF 中的实体对象(分离)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5535571/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com