如何使用实体框架6更新记录? [英] How to update record using Entity Framework 6?

查看:106
本文介绍了如何使用实体框架6更新记录?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图用EF6更新记录。第一个发现的记录,如果存在,更新。
这里是我的code: -

  VAR书=新Model.Book
{
    BookNumber = _book.BookNumber,
    BOOKNAME = _book.BookName,
    BOOKTITLE = _book.BookTitle,
};
使用(VAR DB =新MyContextDB())
{
    VAR的结果= db.Books.SingleOrDefault(B = GT; b.BookNumber == bookNumber);
    如果(结果!= NULL)
    {
        尝试
        {
            db.Books.Attach(书);
            db.Entry(书).STATE = EntityState.Modified;
            db.SaveChanges();
        }
        赶上(异常前)
        {
            扔;
        }
    }
}

每次我尝试使用上面code更新记录,我收到此错误: -


  

{System.Data.Entity.Infrastructure.DbUpdateConcurrencyException:商店
  更新,插入或删除语句影响了意想不到的数
  行(0)。实体可能已被修改或自实体删除
  被加载。刷新ObjectStateManager entrie



解决方案

您正在尝试更新的记录(这对我来说意味着改变现有记录的值,并将其保存回)。所以,你需要检索对象,进行了更改,并保存它。

 使用(VAR DB =新MyContextDB())
{
    VAR的结果= db.Books.SingleOrDefault(B = GT; b.BookNumber == bookNumber);
    如果(结果!= NULL)
    {
        result.SomeValue =一些新的价值;
        db.SaveChanges();
    }
}

I am trying to update record using EF6. First finding the record, if exists, update it. Here is my code:-

var book = new Model.Book
{
    BookNumber =  _book.BookNumber,
    BookName = _book.BookName,
    BookTitle = _book.BookTitle,
};
using (var db = new MyContextDB())
{
    var result = db.Books.SingleOrDefault(b => b.BookNumber == bookNumber);
    if (result != null)
    {
        try
        {
            db.Books.Attach(book);
            db.Entry(book).State = EntityState.Modified;
            db.SaveChanges();
        }
        catch (Exception ex)
        {
            throw;
        }
    }
}

Everytime I try to update record using above code, I am getting this error:-

{System.Data.Entity.Infrastructure.DbUpdateConcurrencyException: Store update, insert, or delete statement affected an unexpected number of rows (0). Entities may have been modified or deleted since entities were loaded. Refresh ObjectStateManager entrie

解决方案

You're trying to update the record (which to me means "change a value on an existing record and save it back"). So you need to retrieve the object, make a change, and save it.

using (var db = new MyContextDB())
{
    var result = db.Books.SingleOrDefault(b => b.BookNumber == bookNumber);
    if (result != null)
    {
        result.SomeValue = "Some new value";
        db.SaveChanges();
    }
}

这篇关于如何使用实体框架6更新记录?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆