Dmi*_*nin 5 linq2db .net-core asp.net-core-2.2
如何使用 Linq2Db 跟踪添加、更新或删除实体行的事件?
我需要在此操作中重新计算数据库中的一些数据,最好的方法是什么?
在实体框架上,我使用自定义存储库类和自定义添加操作。也许这是 Linq2Db 中的唯一方法,但我很有趣,也许有一些捕手来通知这个事件?
这并不像在 EF 中那么容易,因为 linq2db 使用 SQL 进行操作,您可以通过单个更新语句轻松更新数千条记录。例如
db.SomeEntities.Where(e => e.IsExpired)
.Set(e => e.ExpirationDate, e => Sql.CurrentTimestamp)
.Update();
Run Code Online (Sandbox Code Playgroud)
相同的技术可用于insert from, update from, delete。
但是有可能在执行之前捕获 SQL AST。您必须重写类ProcessQuery中的方法DataConnection。示例在这里:ConcurrencyCheckTests.cs
您应该返回传递给方法的相同语句,但属性已更改,statement.IsParameterDependent = true以防止查询缓存。
SqlStatement分析不是微不足道的任务,但却是可能的。你必须处理SqlUpdateStatement、、、。SqlInsertStatementSqlDeleteStatementSqlInsertOrUpdateStatement
第二个选项是编写自己的扩展来操作单个对象,例如UpdateTracked()、DeleteTracked()等。但是正如您从第一个示例中看到的那样,它对复杂的查询没有帮助。
| 归档时间: |
|
| 查看次数: |
2075 次 |
| 最近记录: |