c# - 如何使用 Entity Framework 6 更新记录?

标签 c# entity-framework entity-framework-6 ef-database-first

我正在尝试使用 EF6 更新记录。首先找到记录,如果存在则更新。 这是我的代码:

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;
        }
    }
}

每次我尝试使用上述代码更新记录时,我都会收到此错误:

{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 entries

最佳答案

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

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

关于c# - 如何使用 Entity Framework 6 更新记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25894587/

相关文章:

.net - Entity Framework 代码首先使用时间戳类型

c# - Entity Framework 6 不在 SQLite 数据库中创建表

indexing - 非集群主键 Entity Framework 代码优先

c# - Entity Framework 灵活缓存

c# - 在组合框中显示空白而不是第一项

c# - 一旦角色在 y 上变为 0,我该如何停止角色旋转?

c# - 有没有办法在 .NET Core 中使用 Entity Framework?

c# - MVC EF 不断寻找 userId,这很昂贵

c# - 每次升级从我的 dotNet 应用程序使用的 COM 库时,我是否需要重建和重新部署?

c# - 使用 Thread.Sleep(n) 会导致性能问题吗?