使用EntityObject派生类型或更改跟踪代理对象时,实体框架会自动跟踪实体发生的更改
这给了我什么优势?如果没有这个,当我调用SaveChanges并且我的POCO被正确保存时,仍会检测到我的更改 .
另外,为什么EF的许多在线教程在进行更改后明确地将状态更改为已修改状态,这有何用途?
context.Entry(model).State = EntityState.Modified;
EF跟踪实体的更改,因此当您调用SaveChanges()时,它将知道要在数据库中更新哪些实体,即 - 生成并针对db运行的SQL .
低于线的原因是附加当前未被跟踪的模型并将其状态设置为已修改 .
如果您自己创建了实体的实例,则需要执行此操作,例如: -
var customer = new Customer();
这不会将您的客户添加到DbContext,因此不会被跟踪 . 所以你需要使用context.Entry(customer) .
1 回答
EF跟踪实体的更改,因此当您调用SaveChanges()时,它将知道要在数据库中更新哪些实体,即 - 生成并针对db运行的SQL .
低于线的原因是附加当前未被跟踪的模型并将其状态设置为已修改 .
如果您自己创建了实体的实例,则需要执行此操作,例如: -
这不会将您的客户添加到DbContext,因此不会被跟踪 . 所以你需要使用context.Entry(customer) .