Сначала я использую код EF 4.2 в моем проекте mvc3.MiniProfiler, EntityFramework code first и background tasks nullreference
miniprofiler отлично работает (sql + mvc), но у меня проблема с асинхронными задачами.
я выполняю «Em этот путь (этот метод хорошо, я чувствую себя немного неловко с этим new DatabaseContext()
?)
public static void PerformAsycAction(this User user, Action<User> action)
{
ThreadPool.QueueUserWorkItem(_ =>
{
var context = new DatabaseContext();
MiniProfilerEF.Initialize();
var consistantUser = context.Set<User>().Get(user.Id);
action(consistantUser);
context.SaveChanges();
});
}
Я получил соответствующую строку в Application_Start:
protected void Application_Start()
{
MiniProfilerEF.Initialize();
...
}
Экстремирование выбрасывается во время первой операции с db в action(consistantUser);
вот след:
на MvcMiniProfiler.MiniProfiler.AddSqlTiming (SqlTiming статистика) в C: \ Users \ SAM \ Desktop \ MVC мини-профилировщика \ MvcMiniProfiler \ MiniProfiler.cs: строка 274 в MvcMiniProfiler.SqlTiming..ctor (DbCommand команда, ExecuteType тип, профилировщик MiniProfiler) в C: \ Users \ sam \ Desktop \ mvc-mini-profiler \ MvcMiniProfiler \ SqlTiming.cs: строка 137 в MvcMiniProfiler.SqlProfiler.ExecuteStartImpl (команда DbCommand, тип ExecuteType) в C: \ Users \ sam \ Desktop \ mvc-mini-profiler \ MvcMiniProfiler \ SqlProfiler.cs: строка 39 в MvcMiniProfiler.SqlProfilerExtensions.ExecuteStart (SqlProfiler sqlProfiler, команда DbCommand, тип ExecuteType) в C: \ Users \ sam \ Desktop \ mvc-mini-profiler \ MvcMiniProfiler \ SqlProfiler.cs: строка 93 в MvcMiniProfiler.MiniProfiler.MvcMiniProfiler.Data.IDbProfiler.ExecuteStart (DbCommand profiledDbCommand, Exe cuteType executeType) в C: \ Users \ sam \ Desktop \ mvc-mini-profiler \ MvcMiniProfiler \ MiniProfiler.IDbProfiler.cs: строка 14 в MvcMiniProfiler.Data.ProfiledDbCommand.ExecuteDbDataReader (поведение CommandBehavior) в C: \ Users \ sam \ Рабочий стол \ mvc-mini-profiler \ MvcMiniProfiler \ Data \ ProfiledDbCommand.cs: строка 158 в System.Data.Common.DbCommand.ExecuteReader (поведение CommandBehavior) в System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands (EntityCommand entityCommand, поведение CommandBehavior)
что я делаю неправильно? Любая помощь будет оценена по достоинству.
EDIT: Я пытался инициализировать MiniProfiler (MiniProfilerEF.Initialize();
) снова, в потоке, где performd фоновой задачи (до начала DatabaseContext), и есть другое исключение в настоящее время:
Невозможно привести объект типа «MvcMiniProfiler.Data.EFProfiledDbConnection» к типу «System.Data.SqlClient.SqlConnection
на самом деле, это не обязательно для профилирования запросов в фоновом потоке, но это сбоя вся цепочка, поэтому приложение не работает должным образом, и я должен разоблачить весь профайлер. Есть ли способ отключить его для этого, фон, поток, чтобы предотвратить его сбой?
Какое фактическое исключение? –
NullReferenceException –
Вы подтвердили, что не передаете значение null в любую из этих функций? –