C# 上下文在使用AutoMapper映射后未更新加载的实体
在我的代码中,我使用C# 上下文在使用AutoMapper映射后未更新加载的实体,c#,entity-framework,ef-code-first,automapper,C#,Entity Framework,Ef Code First,Automapper,在我的代码中,我使用id加载实体,然后使用AutoMapper更新其内容,最后调用Context.SaveChanges。但是它不起作用了。但是当我手动设置属性时,它会产生效果!怎么了 var entity = Context.MyEntities.Find(id); entity = Mapper.Map<MyEntity>(viewModel); Context.SaveChanges; 然后使用AutoMapper更新其内容 这不是真的-Mapper.Map(viewMo
id
加载实体
,然后使用AutoMapper
更新其内容,最后调用Context.SaveChanges
。但是它不起作用了。但是当我手动设置属性时,它会产生效果!怎么了
var entity = Context.MyEntities.Find(id);
entity = Mapper.Map<MyEntity>(viewModel);
Context.SaveChanges;
然后使用AutoMapper更新其内容
这不是真的-Mapper.Map(viewModel)
返回MyEntity
类的新实例。它不会更新现有实例的属性。您应该将该新实例附加到上下文:
var entity = Context.MyEntities.Find(id); // this line is useless
entity = Mapper.Map<MyEntity>(viewModel);
Context.MyEntities.Attach(entity);
Context.SaveChanges;
令人惊叹的。谢谢你们,关于汽车制造商的行为,第三种选择如预期的那样有效。谢谢你们的帮助。克拉萨维奇!斯帕西博!我在拔我头上的最后一根头发!
var entity = Context.MyEntities.Find(id); // this line is useless
entity = Mapper.Map<MyEntity>(viewModel);
Context.MyEntities.Attach(entity);
Context.SaveChanges;
var entityFromDb = Context.MyEntities.Find(id);
var competelyNewEntity = Mapper.Map<MyEntity>(viewModel);
Context.MyEntities.Attach(competelyNewEntity);
Context.SaveChanges;
var entity = Context.MyEntities.Find(id);
Mapper.Map(viewModel, entity); // use this method for mapping
Context.SaveChanges;