繁体   English   中英

自动映射器,实体框架更新数据库

[英]Automapper, Entity framework update database

我正在使用自动映射器和实体框架,这很好,为我节省了很多代码,但是在进行更新时,我遇到了问题。

我使用以下内容将实体附加到EF上下文,然后使用自动映射器更新元素,如果值未更新为默认值(IE字符串为null,int为0等),这很好。

var entity = new Car
{
    CarId = carViewModel.CarId,
};

db.Cars.Attach(entity);

AutoMapper.Mapper.Map(carViewModel, entity);

db.SaveChanges();

自动映射器是否具有可以帮助解决此问题的功能,还是需要手动设置一些替代默认设置?

另一种选择是从数据库加载现有项目并进行更新,但我希望避免这种情况,因为我不需要这样做。

我认为问题实际上是实体框架不知道您的实体已更改。 代替使用db.Cars.Attach ,尝试设置实体状态:

var entity = new Car();
AutoMapper.Mapper.Map(carViewModel, entity);
db.Entry(entity).State = EntityState.Modified; 
db.SaveChanges();

您可以将实体的状态更改为已修改:

db.Entry(entity).State = EntityState.Modified; 

有关更多关于实体状态的信息,请参见此MSDN文章。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM