我已经在c#中创建了像这样的代码
IList<BookViewModel> ListBook= _bookService.GetListById(BookViewModel);
foreach (BookViewModel apart in ListBook)
{
apart.Status = "Published";
_bookService.Update(apart);
}
并在我的存储库中进行代码更新。
public virtual TEntity Update(TEntity updatingObject)
{
this.GetDbSet<TEntity>().Attach(updatingObject);
this.SetEntityState(updatingObject, EntityState.Modified);
this.UnitOfWork.SaveChanges();
return updatingObject;
}
和我的方法
public IList<BookViewModel> GetListById(BookViewModel bookVM)
{
Expression<Func<Book, bool>> criteria = c => c.IdBook == bookVM.Id Book;
return this.GetList(criteria);
}
但我有错误
附加“Models.Book”类型的实体失败,因为另一个 已经是同一类型的实体 具有相同的主键值。使用“附加”方法或设置状态时可能会发生这种情况 如果图中的任何实体具有冲突的键值,则实体为“未更改”或“已修改”。 这可能是因为某些实体是新的并且尚未收到数据库生成的键值。在 在这种情况下,使用“添加”方法或“已添加”实体状态来跟踪图形,然后设置状态 非适当的非实体实体“不变”或“修改”。
任何人都有改变代码更新方法的建议,我已经阅读了很多参考但是它有所不同。感谢的!