我想找出执行某些.net代码时被触摸的表格。我怎样才能做到这一点?在一个事务中可能会有很多表被写入,并且有助于获得所有受影响的列表。
答案 0 :(得分:3)
在Sql Server中,您有一个名为Profiler的工具(尽管不是快速版本)。转到Management Studio,工具菜单,应该有“Sql Profiler”。它作为一个单独的应用程序运行。
启动时,为其提供与要监视的数据库服务器的连接。您可以监控各种各样的事情,但很可能您只想过滤数据库并查看查询:
现在,当您单击“运行”时,跟踪正在运行。暂停它,将代码运行到您想要查看正在发生的行的行,然后取消暂停。您将看到所有执行的查询(不仅仅是您的代码,而是针对db执行的任何操作)。
您没有指定您正在使用的sql server的版本,但是自v2000以来,探查器就在那里,可能存在细微差别。
答案 1 :(得分:1)
如果您正在使用Entity Framework,则可以询问DbContext的ChangeTracker属性
public class MyDbContext : DbContext
{
// DbSet<...> stuff excluded in this sample
public override SaveChanges()
{
var changes = ChangeTracker.Entries;
// changes now contains every piece that has been touched in this DbContext before saving
}
}