我得到Store更新,插入或删除语句影响了意外的行数(0)错误

时间:2017-05-04 07:58:47

标签: c# entity-framework

我在控制器中写了这段代码:

 public ActionResult AddNotice(NoticeViewModel nVN)
    {
        BOL.User CurrentUser = userbs.user.GetUser(User.Identity.Name);
        int UserId = CurrentUser.ID;

        var objNotice = new BOL.Notice()
        {
            NoticeID = nVN.SelectedNoticeTypeId,
            ProductID = nVN.ProductID,
            UserID = UserId
        };
        objBs.notice.AddNotice(objNotice);

方法:

public void AddNotice(Notice _notice)
    {
        int count = GetAllNotices().Where(x => x.UserID == _notice.UserID).Where(x => x.ProductID == _notice.ProductID).Count();
        if (count == 0)
            notice.InsertNotic(_notice);
        else
            notice.UpdateNotic(_notice);
    }
    public List<Notice> GetAllNotices()
    {
        return notice.GetAllNotices();
    }

和:

public void UpdateNotic(Notice _notic)
        {
            db.Entry(_notic).State = EntityState.Modified;
            db.Configuration.ValidateOnSaveEnabled = false;
            db.SaveChanges();
            db.Configuration.ValidateOnSaveEnabled = true;
        }

运行更新时,我在db.SaveChanges();

中收到错误
  

EntityFramework.dll中发生了'System.Data.Entity.Infrastructure.DbUpdateConcurrencyException'类型的异常,但未在用户代码中处理

     

其他信息:存储更新,插入或删除语句   影响了意外的行数(0)。实体可能已经存在   自实体加载后修改或删除

我不知道是什么问题?

1 个答案:

答案 0 :(得分:0)

在更新案例的AddNotice中,Notice实例未从您用于更新它的相同上下文中获取。

更改跟踪取决于与上下文关联的实体,然后进行更新。

或者您可以使用IDbSet<T>.Attach(entity)关联在其他位置创建的实例。