He estado jugando con MVC-Mini-Profiler, y me pareció muy útil. Sin embargo, en todas las páginas que trazo, recibo informes de consultas duplicadas, como la siguiente.MVC-Mini-Profiler muestra falsamente consultas duplicadas
Sin embargo, he rastreado las consultas en SQL Server Profiler, y no hay dudas de que solo llega al DB una vez.
¿Me falta un concepto aquí o lo configuré de la manera incorrecta? He buscado alto y bajo para personas con problemas similares, sin suerte, así que dudo que haya un error.
http://localhost:27941/clubs
T+175.2 ms
Reader
13.6 ms
utePageHierarchy Execute System.Collections.Generic.IEnumerable<T>.GetEnumerator GetResults Execute ExecuteStoreCommands
SELECT
[Extent1].[TeamId] AS [TeamId],
[Extent1].[Title] AS [Title],
[Extent1].[TitleShort] AS [TitleShort],
[Extent1].[LogoImageId] AS [LogoImageId],
[Extent1].[Slug] AS [Slug],
(SELECT
COUNT(1) AS [A1]
FROM [dbo].[Athletes] AS [Extent2]
WHERE [Extent1].[TeamId] = [Extent2].[TeamId]) AS [C1]
FROM [dbo].[Teams] AS [Extent1]
WHERE 352 = [Extent1].[CountryId]
http://localhost:27941/clubs
T+175.4 ms
DUPLICATE Reader
13.4 ms
utePageHierarchy Execute System.Collections.Generic.IEnumerable<T>.GetEnumerator GetResults Execute ExecuteStoreCommands
SELECT
[Extent1].[TeamId] AS [TeamId],
[Extent1].[Title] AS [Title],
[Extent1].[TitleShort] AS [TitleShort],
[Extent1].[LogoImageId] AS [LogoImageId],
[Extent1].[Slug] AS [Slug],
(SELECT
COUNT(1) AS [A1]
FROM [dbo].[Athletes] AS [Extent2]
WHERE [Extent1].[TeamId] = [Extent2].[TeamId]) AS [C1]
FROM [dbo].[Teams] AS [Extent1]
WHERE 352 = [Extent1].[CountryId
utilizo EF4 y han puesto en práctica el contexto de esta manera:
public class BaseController : Controller
{
public ResultsDBEntities _db;
public BaseController()
{
var rootconn = ProfiledDbConnection.Get(GetStoreConnection(ConfigurationManager.ConnectionStrings["ResultsDBEntities"].ConnectionString));
var conn = ProfiledDbConnection.Get(rootconn);
_db = ObjectContextUtils.CreateObjectContext<ResultsDBEntities>(conn);
}
public static DbConnection GetStoreConnection<T>() where T : System.Data.Objects.ObjectContext
{
return GetStoreConnection("name=" + typeof(T).Name);
}
public static DbConnection GetStoreConnection(string entityConnectionString)
{
DbConnection storeConnection;
// Let entity framework do the heavy-lifting to create the connection.
using (var connection = new EntityConnection(entityConnectionString))
{
// Steal the connection that EF created.
storeConnection = connection.StoreConnection;
// Make EF forget about the connection that we stole (HACK!)
connection.GetType().GetField("_storeConnection",
BindingFlags.NonPublic | BindingFlags.Instance).SetValue(connection, null);
// Return our shiny, new connection.
return storeConnection;
}
}
}
¿Esto sucede si tomas el último nuget? ... ¿puedes asegurarte de hacer una 'var s = MiniProfiler.Current.Step (" whatever "))' al comienzo de tu solicitud y disponer de ella al final de tu solicitud? –
Llegué aquí porque estoy teniendo el mismo problema. No hay perfiles de db involucrados (¡todavía!): Solo las solicitudes ajax que solo se envían una vez (Glimpse lo confirma) aparecen muchas veces en la salida. Puedo ver las llamadas múltiples correspondientes a/mini-profiler-results? Id = SOMEGUID donde SOMEGUID a veces se duplica. En el ejemplo que estoy viendo ahora hay seis llamadas a/mini-profiler-results para cuatro solicitudes ajax, dos con GUIDS duplicados, y esto corresponde a mis seis resultados de salida del generador de perfiles. Espero que tenga sentido! – randomsequence
Estoy experimentando este problema con MVC Mini Profiler versión 1.9. – solidbeats