Edi*_*ang 3 ado.net design-patterns entity-framework
我正在查看EntityFramework.Extended。它可以在数据库实体上运行Update()和Delete()。喜欢:
//delete all users where FirstName matches
context.Users.Delete(u => u.FirstName == "firstname");
Run Code Online (Sandbox Code Playgroud)
但有趣的是,它不需要调用context.SaveChanges(),它只是直接进入数据库并删除记录。
这是一个糟糕的设计吗?我认为对实体的每次修改都需要调用SaveChanges()才能生效并保持数据库和内存对象之间正确的关系和映射。
您必须了解 SaveChanges 的作用。SaveChanges 提交存储在当前本地缓存中的对象模型更改。
您引用的库生成 SQL 命令语句,并且不修改对象上下文。因此,由于对象上下文未更改,因此无需保存任何更改(换句话说,SaveChanges 指的是数据模型,而不是数据库)。
为了说明这一点......想象一下您的孩子乘公共汽车去学校和您送他们下车之间的区别。
当他们乘坐公共汽车去学校时,校车会行驶到各个站点,然后当完成后,公共汽车立即将所有孩子送下车。这有点像调用 SaveChanges。
但是,当您送孩子去学校时,这是一项单一任务,只需一次操作即可完成,在您执行此操作时。
| 归档时间: |
|
| 查看次数: |
2394 次 |
| 最近记录: |