【问题标题】:ASP.net Core Entity Framework CurrentValues.SetValues() best current alternativeASP.net 核心实体框架 CurrentValues.SetValues() 当前最佳替代方案
【发布时间】:2017-03-28 14:02:20
【问题描述】:

正如那些使用 Entity Framework Core 的人可能知道的那样,当前版本没有针对实体的 CurrentValues.SetValues() 的实现。正如issue 所说,下一个版本 v1.1 似乎会对此提供支持。在那之前,有没有人有更新实体条目的解决方案?

对于上下文,过去实体框架中的 SetValues 函数接受一个实体并将其属性更新为作为参数传递的实体的值,即:

var updatedEntity = currentEntity.CurrentValues.SetValues(newValues);
_dbContext.SaveChanges();

我找到了一些使用 PropertyInfo 来制作通用更新功能的实现,但还没有找到任何看起来很干净的解决方案。可能只需要拿走我能得到的东西:)

附言我意识到此功能仅适用于没有复杂对象图的简单实体,这些对象图需要更新其他相关实体。我的用例很简单。现在不得不手动映射属性很烦人。

【问题讨论】:

  • 您可以使用 1.1.0 预览版。
  • 我和@GertArnold 在一起。由于您已经加入了 EF Core beta 测试计划(实际上是 EF Core v1.0),所以再加入一个不会有什么坏处:)
  • @IvanStoev 我同意这感觉更像是一个测试版:) 我将研究 1.1 预览版。感谢您的回复
  • 1.1 现已发布!

标签: asp.net entity-framework asp.net-core entity-framework-core


【解决方案1】:

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

见下面代码sn-p

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

【讨论】:

  • 是的,这应该可以。请注意,CurrentValues.SetValues() 直到最近发布的 v1.1.0 才可用,正如我们在上面的 cmets 中讨论的那样。
猜你喜欢
  • 2018-04-06
  • 1970-01-01
  • 2020-02-23
  • 2020-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-14
相关资源
最近更新 更多