如何使用 Entity Framework 7 更新记录?

How to update record using Entity Framework 7?

我正在尝试使用 EntityState.Modified 更新包含各种相关表的字段,但 SaveChanges() 没有应用更改。我正在使用 postman 到 post 到 localhost/8000/api/co/1,状态显示 202 已接受。我的存储库正在返回记录,但根本没有修改。

问题 我的存储库中缺少什么才能使更改生效? 我需要单独设置每个 属性 吗? (我有几百个)

我能找到的大多数示例都与存储库模式和 entity framework 7、仅使用 EntityState.Modified(),然后保存更改。有人可以帮我指出我所缺少的吗?我的其他存储库运行良好,可以正常创建、删除和运行

我的存储库

public COMP Update(int id)
{
    var original = _context.Complaints.Where(c => c.COMP_ID == id).FirstOrDefault<COMPLAINT>();
    _context.Entry(original).State = EntityState.Modified;
    SaveAll();
    return original;
}

public bool SaveAll()
{
    return _context.SaveChanges() > 0;
}

我根本看不到您实际上在哪里对实体进行了任何更改。您应该拉取原始实体,进行更改,然后调用 SaveChanges() 提交它们:

public COMP Update(int id, string name)
{
    // Grab your entity
    var original = _context.Complaints.FirstOrDefault(c => c.COMP_ID == id);
    // Make your changes here (using a parameter)
    original.Name = name;
    // Save your changes
    SaveAll();
    // Return your original entity with the changes made
    return original;
}

在上面的场景中,假设您使用 Postman 更新这个特定的实体并传入 idname 作为参数(例如,我们假设此方法只是更新名字)。

如果这样做,则可以使用 name 参数来更新现有实体:

// Make your changes here (using a parameter)
original.Name = name;

然后调用 SaveChanges() 方法将在您的数据库中实际执行更新。

如果您有 Change Tracking enabled on your context,您也不用担心手动设置修改后的状态。