有什么方法可以在C#代码(LINQ-TO-SQL)中的两个点之间获取所有数据



我的cenario是:我正在C#ASP.NET中开发的一个系统(无论如何还是系统)。而且我正在尝试开始创建一些单元测试以启动重构(相信,需要重构(有一些具有10K,12K线路的控制器)。问题在于,该系统中的许多内容与数据库有关(系统与数据库紧密结合)。数据库上下文是在许多代码中实例化的,而不是注入的。因此,我现在的意思是将一些数据嘲笑到本地MDB文件中以进行重构代码并创建具有自己的MDB的单元测试(具有所有数据库结构,但只有他将使用的数据)。

我什么?这样的东西:

[TestMethod()]
public void AnyTest()
{
    var dbLogger = new DbLogger(); //this class is not created, it's just an example.
    dbLogger.Start();
     WorstWrittenMethodEver(); //this method will call any other methods insides, 
                               //a couple of then 
                               //and I really don't know the order and the
                               //complexity (much times very high), and this will probably
                               //instantiate the DataContext a lot of times and do
                               //a lot of data retrieval.
    db.StopLog();
    Console.WriteLine(db.DataRetrieved); //And in this line I will print all the tables 
   //and data retrieved between this two points.
}

之后,我将获取该数据,嘲笑一个MDB文件,然后对上述单元测试进行重新处理以进行真正的单元测试。

无论如何都有吗?

看起来这不是很容易的任务。而且我认为您应该使用一些受欢迎和测试的库或工具。我的建议是使用微型纤维。它允许捕获所有SQL查询(还包括LINQTOSQL的支持)。它具有很好的UI和API,可以在您的代码中进行交互。实际上,要获取所有SQL查询数据,您可以使用以下方法:

MiniProfiler.Current.GetSqlTimings();

最新更新