c# – 使用AutoMapper,“相同类型的实体已经具有相同的主键值”
当我使用AutoMapper时,出现此错误:
我想从数据库中检索User时将User映射到UserModel.我在UI中更改UserModel属性,然后再将其映射到User并更新它. public UserModel GetUserByUserId(int id) { var user = db.Users.Where(p => p.UserId == id).FirstOrDefault(); var userModel = Mapper.Map<UserModel>(user); return userModel; } public void Update(UserModel userModel) { var user = Mapper.Map<User>(userModel); db.Entry(user).State = EntityState.Modified; db.SaveChanges(); } 但如果我不使用自动映射器并编写类似下面的代码,它可以正常工作. public void Update(UserModel userModel) { updatingUser.Email = userModel.Email; updatingUser.FirstName = userModel.FirstName; updatingUser.ModifiedDate = DateTime.Now; updatingUser.LastName = userModel.LastName; updatingUser.Password = userModel.Password; updatingUser.UserName = userModel.UserName; db.Entry(updatingUser).State = EntityState.Modified; db.SaveChanges(); } 我该怎么办: 解决方法
这可能只是我不知道某些功能,但你的更新功能看起来很时髦.我不知道它将如何将您的新用户与数据库中的现有用户相关联.
这就是我接近它的方式. public void Update(UserModel userModel) { var user = db.Users.Find(userModel.UserId); Mapper.Map(userModel,user); db.SaveChanges(); } 或者,如果您喜欢像第二次更新功能那样做 public void Update(UserModel userModel) { Mapper.Map(userModel,updatingUser); db.Entry(updatingUser).State = EntityState.Modified; db.SaveChanges(); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |