2013-05-07 99 views
0

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

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

请让我知道。

谢谢..

+0

映射我们应该让你知道? – Hogan 2013-05-07 19:02:55

+0

所以我试图做这个entityA = entityB,但那不适合我。我也在做db.SaveChanges(),但我的数据库没有显示新的值? – Prashant 2013-05-07 19:04:21

+0

你可以添加'entityB'并删除'entityA'吗? – ajakblackgoat 2013-05-08 05:06:48

回答

0

简单地做entity1 = entity2将改变使用实体引用,因此上下文不会跟踪新的参考AY更多。因此改变的值不会被更新。

你应该使用对象映射器。我个人使用,可以使用包管理器控制台命令Install-Package 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); 
+0

我现在正在使用Automapper,但即使这样也没有更新我的数据库。这是我的代码 - RecordtoUpdate = AutoMapper.Mapper.Map(datafromForm,RecordtoUpdate) dbContext.SaveChanges() – Prashant 2013-05-07 19:55:10

+0

您的代码丢失 – 2013-05-07 19:56:01

+0

我现在使用Automapper,但即使这不是更新我的数据库。这是我的代码 - RecordtoUpdate = AutoMapper.Mapper.Map(datafromForm,RecordtoUpdate)dbContext.SaveChanges() – Prashant 2013-05-07 19:57:43