2011-06-09 11 views
18

El ASP.NET MVC Mini Profiler se ve impresionante, pero no me da el ejemplo de uso de SQL de Linq 2.¿Cómo puedo hacer que el profiler ASP.NET MVC mini funcione con Linq 2 SQL?

Este es el ejemplo de la documentación Linq2SQL perfilador:

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

¿Cómo utilizar esto en mi aplicación real? Hubiera esperado algún tipo de envoltura alrededor de mi DataContext, pero parece que funciona de una manera diferente. Ni siquiera sé dónde se define ese método "GetConnection()" del ejemplo.

Gracias,

Adrian

Respuesta

7

Finalmente lo resolvió. En caso de que alguien más tenga la misma pregunta:

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

     } 
+4

el punto entero es que es seguro de usar en la producción, no hay necesidad de hacer las cosas #if DEBUG ... si un la sesión no está perfilando Get devolverá la conexión original –

+0

tengo un problema extraño cuando uso mini profiler con linq a sql plz eche un vistazo a http://stackoverflow.com/questions/6410756/using-different-overload-of-datacontext- in-linq-to-sql –

+0

¿Dónde pone este método y cómo lo llama? – RyanW

3

getConnection() es una función que devuelva un DbConnection. Probablemente solo haga

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

en su lugar.

6

Ninguna de las otras respuestas funcionó para mí. La adición de este a mi clase DataClassesDataContext en mis DataClasses.Designer.cs hizo:

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

Parece que no funciona para mí, no hay una definición para un método Get() en ProfiledDbConnection. – RyanW

+2

@RyanW 'use la nueva ProfiledDbConnection (sqlConnection, MiniProfiler.Current)' en su lugar. –

Cuestiones relacionadas