在ASP.NET MVC项目中记录DML操作

问题描述 投票:0回答:1

在asp.net mvc项目中,有多种记录dml操作的方法,例如插入,更新,删除。我想知道在代码中使用方面或在数据库服务器中使用触发器或CDC哪个有用,还是有更多逻辑方法?

c# asp.net-mvc web cdc aspect
1个回答
0
投票
假设您使用Entity Framework作为ORM,则可以注册一个应用程序拦截器(请参阅IDbCommandInterceptor)。有关更多信息,请参见Logging and intercepting database operations

另一种记录所有数据库操作非常方便的方法是,按如下所示在DbContext实现上设置Database.Log属性:

public class YourContext : DbContext { public YourContext(ILogger<YourContext> logger) { Database.Log = sql => logger.LogDebug(sql); } }

^^我发现这种方法对于调试非常有用。我将有一个文件附加程序/目标/接收器(取决于您使用的日志框架,例如NLog / Log4net / Serilog)专门用于我的DbContext实现,以便我可以轻松地查看正在执行的数据库操作的SQL来自其他应用程序日志的任何噪音。

我使用过很多的另一种方法是使用SQL Server Profiler,但这假设a)您正在使用SQL Server,b)您能够连接到数据库服务器。
© www.soinside.com 2019 - 2024. All rights reserved.