ASP.net Core Entity Framework CurrentValues.SetValues() 的最佳替代方案是什么?

3
作为使用Entity Framework Core的人,你可能知道当前版本没有为实体实现CurrentValues.SetValues()。正如这个问题所述,支持此功能的版本将在下一个v1.1版本中推出。在那之前,有没有人有解决更新实体条目的方法?
为了更好理解,过去的实体框架中的SetValues函数会将一个实体的属性更新为传递的实体参数的值,例如:
var updatedEntity = currentEntity.CurrentValues.SetValues(newValues);
_dbContext.SaveChanges();

我发现一些使用 PropertyInfo 实现的通用更新函数,但没有找到任何看起来更好的干净解决方案。也许只能接受现状 :)
附言: 我意识到这个函数只适用于简单实体,不适用于具有需要更新其他相关实体的复杂对象图的实体。我的用例很简单。现在手动映射属性很麻烦。

1
你可以使用1.1.0预览版。 - Gert Arnold
1
我赞同@GertArnold的观点。既然您已经加入了EF Core beta测试计划(实际上是EF Core v1.0),再加一个也不会有什么影响 :) - Ivan Stoev
1
@IvanStoev 我同意它经常感觉像是一个 beta 版本 :) 我会研究一下 1.1 预览版。谢谢回复。 - big_water
1
1.1现已发布! - ErikEJ
1个回答

4

编辑:现在EF Core v1.1.0已经发布,CurrentValues.SetValues()将起作用。

请参考以下代码片段

var currentEntity = dbSetEntity.Find(id);
_dbContext.Entry(currentEntity).CurrentValues.SetValues(newValues);

是的,这应该可以工作。请注意,CurrentValues.SetValues() 直到最近的 v1.1.0 版本才可用,正如我们在上面的评论中讨论的那样。 - big_water

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接