我正在尝试在由 Oracle 数据库支持的 Web 应用程序中实现审计跟踪,当用户通过 SQL 客户端(如 TOAD)或当我手动使用 Oracle.DataAccess 更改数据时,我们确实有完美工作的审计跟踪触发器。客户通过
// rest omitted for brevity //
var command = new OracleCommand();
command.Connection = conn;
var useridsql = new StringBuilder();
useridsql.AppendLine("BEGIN");
useridsql.AppendLine("dbms_session.set_identifier('username');");
useridsql.AppendLine("END;");
command.CommandText = useridsql.ToString();
command.ExecuteNonQuery();
// Rest of the insert / update / delete code //
当我尝试通过覆盖 DbContext 类中的 SaveChanges() 来做同样的事情时,不起作用的是。
我假设实体使用与上述 ADO.NET 示例不同的方式来管理其连接,因此更新发生的原因是在错误的数据库会话上,因此 dbms_session 对触发器不可见。
我确实尝试关闭连接池,这也没有多大帮助。
我已经尝试了我知道的所有可能的情况,但没有任何成功。
这里有没有人有想法,可以把我推向正确的方向。
在此先感谢,非常感谢您的帮助。
亲切的问候,
最大限度。