我首先在我的mvc3項目中使用EF 4.2代碼。MiniProfiler,EntityFramework代碼優先和後臺任務nullreference
miniprofiler工作正常(sql + mvc),但我有異步任務的問題。
我進行「時間這種方式(是這個方法好,我覺得有點不安與此new DatabaseContext()
?)中的Application_Start
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();
});
}
我有合適的線路:
protected void Application_Start()
{
MiniProfilerEF.Initialize();
...
}
在第一次操作期間引發的興奮與db在action(consistantUser);
這裏是痕跡:
在MvcMiniProfiler.MiniProfiler.AddSqlTiming(SqlTiming數據)在C:\用戶\ SAM \桌面\ MVC-微型分析器\ MvcMiniProfiler \ MiniProfiler.cs:線274 在MvcMiniProfiler.SqlTiming..ctor(的DbCommand命令,ExecuteType在C:\ Users \ sam中的MvcMiniProfiler.SqlProfiler.ExecuteStartImpl(DbCommand命令,ExecuteType類型)中的C:\ Users \ sam \ Desktop \ mvc-mini-profiler \ MvcMiniProfiler \ SqlTiming.cs:行137 \ Desktop \ mvc-mini-profiler \ MvcMiniProfiler \ SqlProfiler.cs:第39行 位於C:\ Users \ sam \ Desktop \ mvc-mini-profiler \中MvcMiniProfiler.SqlProfilerExtensions.ExecuteStart(SqlProfiler sqlProfiler,DbCommand命令,ExecuteType類型) MvcMiniProfiler \ SqlProfiler.cs:第93行 位於MvcMiniProfiler.MiniProfiler.MvcMiniProfiler.Data.IDbProfiler.ExecuteStart(DbCommand profiledDbCommand,Exe C:\ Users \ sam \ Desktop \ mvc-mini-profiler \ MvcMiniProfiler \ MiniProfiler.IDbProfiler.cs:line 14 at MvcMiniProfiler.Data.ProfiledDbCommand.ExecuteDbDataReader(CommandBehavior behavior) Desktop \ mvc-mini-profiler \ MvcMiniProfiler \ Data \ ProfiledDbCommand.cs:第158行 位於System.Data.Common.DbCommand.ExecuteReader(CommandBehavior行爲) 位於System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand,CommandBehavior behavior )
我做錯了什麼? 任何幫助將不勝感激。
編輯:我試圖重新初始化MiniProfiler(MiniProfilerEF.Initialize();
),在backgroung任務performd(啓動DatabaseContext之前)的線程,現在有另一種情況例外:
無法轉換的對象類型'MvcMiniProfiler.Data.EFProfiledDbConnection爲鍵入「System.Data.SqlClient.SqlConnection
事實上,這不是neccessary個人資料在後臺線程的查詢,但它崩潰整個線程,所以應用程序無法正常工作,我不得不disavble整個探查器。有沒有辦法禁用它的背景,線程,以防止它崩潰?
什麼是實際例外? – 2012-02-27 20:20:09
NullReferenceException – 2012-02-27 20:22:21
您是否驗證過您沒有將null傳入任何這些函數? – 2012-02-27 20:23:15