【问题标题】:Linq To Update One Complete RowLinq 更新一个完整的行
【发布时间】:2013-05-07 19:01:30
【问题描述】:

所以我想用我拥有的数据更新/替换一整行。 而不是做 entityA.Name = entityB.Name

我想说entityA = entityB,其中entitiyB与entityA相同,但有新的值。

请告诉我。

谢谢..

【问题讨论】:

  • 我们应该让您知道什么?
  • 所以我正在尝试执行此 entityA = entityB,但这对我不起作用。我也在做 db.SaveChanges(),但我的数据库没有显示新值?
  • 您可以添加entityB 并删除entityA 吗?

标签: asp.net asp.net-mvc vb.net linq entity-framework


【解决方案1】:

只需执行entity1 = entity2 就会更改 entity1 引用,因此上下文不会再跟踪新引用。因此不会更新 changd 值。

您应该为此使用对象映射器。我个人使用可以在包管理器控制台上使用命令Install-Package Glue 安装的 GLUE 还有其他类似AutoMapper

如果你使用胶水,那么只需制作一个类似的映射

var mapping = new Mapping<entity1, entity2>();
mapping.AutoRelateEqualNames();
//or define a mapping using .Relate()
//then call map
mapping.Map(entity1)//this will return entity2
or if you already have an object tracked by a context class call
entity2 = mapping.Map(entity1, entity2);

【讨论】:

  • 我现在正在使用 Automapper,但即使这样也不会更新我的数据库。这是我的代码 - RecordtoUpdate = AutoMapper.Mapper.Map(datafromForm, RecordtoUpdate) dbContext.SaveChanges()
  • 我现在正在使用 Automapper,但即使这样也不会更新我的数据库。这是我的代码 - RecordtoUpdate = AutoMapper.Mapper.Map(datafromForm, RecordtoUpdate) dbContext.SaveChanges()
  • 看这个。以为我不使用自动映射器,我认为这将解决您的问题github.com/AutoMapper/AutoMapper/wiki/Queryable-Extensions
  • 对于胶水虽然这是您必须查看的链接glue.codeplex.com/…
猜你喜欢
  • 2020-06-05
  • 2012-01-02
  • 2023-04-04
  • 2015-07-02
  • 2013-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多