如何让ASP.NET MVC迷你分析器与Linq 2 SQL一起工作?

18

ASP.NET MVC Mini Profiler看起来很棒,但是我不理解 Linq 2 SQL 使用示例。

下面是该分析器文档中的 Linq2SQL 示例:

partial class DBContext
{
   public static DBContext Get()
   {
      var conn = ProfiledDbConnection.Get(GetConnection());
      return new DBContext(conn);
      // or: return DataContextUtils.CreateDataContext<DBContext>(conn);
   }
}

我如何在实际应用中使用它?我本来期望有一种围绕着我的DataContext的包装器,但这似乎是以不同的方式工作的。我甚至不知道示例中的“GetConnection()”方法定义在哪里。

谢谢,

Adrian

3个回答

8

最终弄清楚了。如果有其他人有同样的问题:

 private static DataClassesDataContext CreateNewContext()
        {
            var sqlConnection = new SqlConnection(<myconnectionstring>);
            var profiledConnection = ProfiledDbConnection.Get(sqlConnection);
            return DataContextUtils.CreateDataContext<DataClassesDataContext>(profiledConnection);

        }

4
重点是它在生产中使用是安全的,没有必要做#if DEBUG的操作...如果一个会话不进行分析,Get将返回原始连接。 - Sam Saffron
我在使用MiniProfiler和LINQ to SQL时遇到了奇怪的问题,请查看http://stackoverflow.com/questions/6410756/using-different-overload-of-datacontext-in-linq-to-sql。 - Muhammad Adeel Zahid
你需要做些什么来关闭这个连接,还是当上下文被处理时它会自动关闭? - Aaron D
我应该把这个放在哪里?在我的dbml文件中还是context.cs文件中?我需要创建一个新的函数吗,还是这些文件中应该有CreateNewContext?我对此有点困惑。 - Piotr Kula
@ppumkin:我将它放在我的数据上下文包装类中。无论如何,我出于其他各种原因需要一个包装器。 - Adrian Grigore
显示剩余2条评论

6

其他答案对我都没有用。在我的DataClasses.Designer.cs中,将以下内容添加到我的DataClassesDataContext类中:

public static DataClassesDataContext CreateNewContext()
{
     var sqlConnection = new DataClassesDataContext().Connection;
     var profiledConnection = MvcMiniProfiler.Data.ProfiledDbConnection.Get(sqlConnection);
     return new DataClassesDataContext(profiledConnection);
}

3
对我来说似乎无法工作,ProfiledDbConnection没有Get()方法的定义。 - RyanW
2
@RyanW 请使用 use new ProfiledDbConnection(sqlConnection, MiniProfiler.Current) - Michiel van Oosterhout

3

GetConnection()是一个函数,它会返回一个DbConnection。你可能只需要这样做:

var conn = ProfiledDbConnection.Get(new System.Data.SqlClient.SqlConnection(your_connection_string));

代替之。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接