Я уже несколько секунд стучал головой об этом вопросе. Еще несколько копаний сегодня и смог заставить его работать. Вот что я сделал. В MiniProfiler.cs я определил два метода следующим образом:
public static DbConnection GetConnection()
{
var connectionString = ConfigurationManager.ConnectionStrings["MyModelConnectionString"].ConnectionString;
var entityConnStr = new EntityConnectionStringBuilder(connectionString);
var realConnection = new SqlConnection(entityConnStr.ProviderConnectionString);
return realConnection;
}
public static IMyModelsInterface GetProfiledContext()
{
var connection = new MvcMiniProfiler.Data.EFProfiledDbConnection(GetConnection(), MiniProfiler.Current);
var context = connection.CreateObjectContext<MyModel>();
return context;
}
Примечание: Эти два метода, вероятно, не должны быть определены в MinProfilerPackage, но это был мой первый прошлое/взломать, чтобы он работал.
Затем вызовите GetProfiledContext() и используйте контекст, возвращаемый всякий раз, когда вы хотите профилировать запросы. Я ввел этот контекст профиля в свою фабрику контроллера, используя Ninject. Мой вызов выглядит так:
public NinjectControllerFactory()
{
ninjectKernel = new StandardKernel();
AddBindings();
}
private void AddBindings()
{
var context = MiniProfilerPackage.GetProfiledContext();
IUnitOfWork uow = new UnitOfWork(context);
ninjectKernel.Bind<IRepository>().To<GenericRepository>().WithConstructorArgument("paramUnitOfWork", uow);
// ... rest of the method
}
NinjectControllerFactory мой контроллер завод, который получает набор в Application_Start.
protected void Application_Start()
{
// Add in DI for controller and repo associations
ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory());
// ... rest of the method
}