如何使用 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 更新这个特定的实体并传入 id
和 name
作为参数(例如,我们假设此方法只是更新名字)。
如果这样做,则可以使用 name
参数来更新现有实体:
// Make your changes here (using a parameter)
original.Name = name;
然后调用 SaveChanges()
方法将在您的数据库中实际执行更新。
如果您有 Change Tracking enabled on your context,您也不用担心手动设置修改后的状态。
我正在尝试使用 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 更新这个特定的实体并传入 id
和 name
作为参数(例如,我们假设此方法只是更新名字)。
如果这样做,则可以使用 name
参数来更新现有实体:
// Make your changes here (using a parameter)
original.Name = name;
然后调用 SaveChanges()
方法将在您的数据库中实际执行更新。
如果您有 Change Tracking enabled on your context,您也不用担心手动设置修改后的状态。