我收到存储更新、插入或删除语句影响了意外的行数 (0) 错误
Posted
技术标签:
【中文标题】我收到存储更新、插入或删除语句影响了意外的行数 (0) 错误【英文标题】:i get Store update, insert, or delete statement affected an unexpected number of rows (0) error 【发布时间】:2017-05-04 07:58:46 【问题描述】:我在控制器中写了这段代码:
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)。实体可能已经 自加载实体后修改或删除
我不知道是什么问题??
【问题讨论】:
您使用实体框架添加和更新的方法是...不寻常...您没有DataModel
/ApplicationDbContext
课程吗?您的声明应类似于 db.Notices.Add(entity)
或 db.Notices.AddOrUpdate(entity)
添加或更新
【参考方案1】:
在您的 AddNotice
更新案例中,Notice
实例不是从您用于更新它的同一上下文中获得的。
更改跟踪取决于与上下文关联然后更新的实体。
或者您可以使用IDbSet<T>.Attach(entity)
关联在其他地方创建的实例。
【讨论】:
以上是关于我收到存储更新、插入或删除语句影响了意外的行数 (0) 错误的主要内容,如果未能解决你的问题,请参考以下文章