我想更新实体对象记录但它不显示异常,但它不更新记录 .
在issue_detail objetct中,它先前包含一个空值,在用户更新数据之后调用下面的方法
public Boolean bookReturnedUpdate(Issue_Detail issue)
{
BookController bookController = new BookController();
int bookID = (int) issue.book_id;
Book_Detail book = bookController.findByBookID(bookID);
int noOfCopies = (int) book.no_of_copies;
book.no_of_copies = ++noOfCopies;
Console.Write("just before the update");
bookController.updateBook(book);
Console.WriteLine("Issue ID" +issue.issue_id);
Boolean status = false;
try
{
using (var db = new ModelDB())
{
DateTime issueD = (DateTime) issue.return_date;
Console.WriteLine("Details " + issueD); // here I can see the date is update and it contains the new date I have inserted
db.Entry(issue).State = EntityState.Modified;
db.Issue_Detail.Attach(issue);
db.SaveChanges(); // this returns 0 when I have checked wit h Console.WriteLine
status = true;
}
}
catch (Exception ex)
{
Console.WriteLine("Book return update error " + ex.InnerException);
}
return status;
}
但是在完成更新之后,它仍然是旧的空记录 .
谢谢 .
我尝试过db.SaveChanges()它也没用
如果有人需要完整的存储库,请检查以下Github链接https://github.com/ccmcwolf/LibraryManagementSystem
3 回答
你可以这样做:
我认为问题是你在保存之前的
db.Issue_Detail.Attach(issue);
电话......DbSet.Attach
这意味着您在设置后会丢失
State = Modified
.如果要更新现有记录,最简单的方法是首先从数据库中检索项目,然后更新值 .
来自您代码中的相关部分(下面未经测试的代码):