Как заставить мини-профилировщик ASP.NET MVC работать с Linq 2 SQL?

Мини-профилировщик ASP.NET MVC выглядит великолепно, но я не понимаю пример использования 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()" из примера.

Спасибо,

Адриан


person Adrian Grigore    schedule 09.06.2011    source источник


Ответы (3)


Наконец-то разобрался. Если у кого-то еще есть такой же вопрос:

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

        }
person Adrian Grigore    schedule 09.06.2011
comment
все дело в том, что его безопасно использовать в производстве, нет необходимости делать #if DEBUG материал... если сеанс не профилируется, Get вернет исходное соединение - person Sam Saffron; 10.06.2011
comment
у меня странная проблема при использовании мини-профилировщика с linq to sql, пожалуйста, посмотрите stackoverflow.com/questions/6410756/ - person Muhammad Adeel Zahid; 21.06.2011
comment
Где вы помещаете этот метод и как вы его вызываете? - person RyanW; 26.08.2011
comment
@RyanW: у меня есть класс-оболочка, который создает мой контекст данных. Вот где этот метод находится. - person Adrian Grigore; 29.08.2011
comment
Вам нужно что-то сделать, чтобы закрыть это соединение, или оно само закроется при удалении контекста? - person Aaron D; 26.01.2012
comment
Куда мне это положить? В моей dbml? или контекст.cs? Создать новую функцию или где-то в этих файлах должен быть CreteNewContext? Я немного потерялся с этим - person Piotr Kula; 07.02.2013
comment
@ppumkin: я поместил это в класс-оболочку вокруг моего контекста данных. Мне все равно нужна была обертка по разным другим причинам. - person Adrian Grigore; 08.02.2013

Ни один из других ответов не работал для меня. Добавление этого в мой класс DataClassesDataContext в моем DataClasses.Designer.cs сделало:

public static DataClassesDataContext CreateNewContext()
{
     var sqlConnection = new DataClassesDataContext().Connection;
     var profiledConnection = MvcMiniProfiler.Data.ProfiledDbConnection.Get(sqlConnection);
     return new DataClassesDataContext(profiledConnection);
}
person normanthesquid    schedule 23.06.2011
comment
Кажется, у меня это не работает, для ProfiledDbConnection нет определения метода Get(). - person RyanW; 26.08.2011
comment
@RyanW use new ProfiledDbConnection(sqlConnection, MiniProfiler.Current) вместо этого. - person Michiel van Oosterhout; 13.07.2012

GetConnection() — это функция, которая возвращает DbConnection. Вы, вероятно, просто сделаете

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

вместо.

person CassOnMars    schedule 09.06.2011