gpt4 book ai didi

.net-core - 如何跟踪 Linq2Db 添加、更新、删除事件?

转载 作者:行者123 更新时间:2023-12-02 00:56:22 28 4
gpt4 key购买 nike

如何使用 Linq2Db 跟踪有关添加、更新或删除实体行的事件?

我需要在此操作中重新计算 db 中的一些数据,最好的方法是什么?

在 Entity Framework 上,我将自定义 Repository 类与自定义添加操作一起使用。 Mabe 这只是 Linq2Db 中的一种方式,但我很感兴趣,mabe 有一些捕手来通知这个事件吗?

最佳答案

它不像在 EF 中那么容易,因为 linq2db 使用 SQL 进行操作,您可以通过单个更新语句轻松更新数千条记录。
例如

db.SomeEntities.Where(e => e.IsExpired)
.Set(e => e.ExpirationDate, e => Sql.CurrentTimestamp)
.Update();

相同的技术可以用于 insert from , update from , delete .

但是有可能在执行之前捕获 SQL AST。您必须覆盖 ProcessQuery您的 DataConnection 中的方法类(class)。
sample 在这里: ConcurrencyCheckTests.cs

您应该返回传递给方法的相同语句,但更改了属性 statement.IsParameterDependent = true以防止查询缓存。
SqlStatement分析不是微不足道的任务,而是可能的。你必须处理 SqlUpdateStatement , SqlInsertStatement , SqlDeleteStatement , SqlInsertOrUpdateStatement .

第二种选择是编写您自己的扩展来操作单个对象,例如, UpdateTracked() , DeleteTracked()等。但是正如您从第一个示例中看到的那样,它在复杂查询中无济于事。

关于.net-core - 如何跟踪 Linq2Db 添加、更新、删除事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53925034/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com