Tôi sử dụng mã EF 4.2 đầu tiên trong dự án mvc3 của tôi.MiniProfiler, EntityFramework mã đầu tiên và nền nhiệm vụ nullreference
miniprofiler hoạt động tốt (sql + mvc), nhưng tôi gặp sự cố với các tác vụ không đồng bộ.
tôi thực hiện 'em theo cách này (được phương pháp này ok tôi cảm thấy một chút khó chịu với điều này new DatabaseContext()
?) Dòng
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();
});
}
Tôi đã có thích hợp trong Application_Start:
protected void Application_Start()
{
MiniProfilerEF.Initialize();
...
}
Các excpetion được ném trong hoạt động đầu tiên với db trong action(consistantUser);
đây là dấu vết:
tại MvcMiniProfiler.MiniProfiler.AddSqlTiming (SqlTiming số liệu thống kê) trong C: \ Users \ sam \ Desktop \ MVC-mini-profiler \ MvcMiniProfiler \ MiniProfiler.cs: dòng 274 tại MvcMiniProfiler.SqlTiming..ctor (DbCommand lệnh, ExecuteType , MiniProfiler profiler) trong C: \ Users \ sam \ Desktop \ mvc-mini-profiler \ MvcMiniProfiler \ SqlTiming.cs: dòng 137 tại MvcMiniProfiler.SqlProfiler.ExecuteStartImpl (lệnh DbCommand, kiểu ExecuteType) trong C: \ Users \ sam \ Desktop \ mvc-mini-profiler \ MvcMiniProfiler \ SqlProfiler.cs: dòng 39 tại MvcMiniProfiler.SqlProfilerExtensions.ExecuteStart (SqlProfiler sqlProfiler, lệnh DbCommand, kiểu ExecuteType) trong C: \ Users \ sam \ Desktop \ mvc-mini-profiler \ MvcMiniProfiler \ SqlProfiler.cs: dòng 93 tại MvcMiniProfiler.MiniProfiler.MvcMiniProfiler.Data.IDbProfiler.ExecuteStart (DbCommand profiledDbCommand, Exe cuteType executeType) trong C: \ Users \ sam \ Desktop \ mvc-mini-profiler \ MvcMiniProfiler \ MiniProfiler.IDbProfiler.cs: dòng 14 tại MvcMiniProfiler.Data.ProfiledDbCommand.ExecuteDbDataReader (Hành vi CommandBehavior) trong C: \ Users \ sam \ Desktop \ MVC-mini-profiler \ MvcMiniProfiler \ Data \ ProfiledDbCommand.cs: dòng 158 tại System.Data.Common.DbCommand.ExecuteReader (hành vi CommandBehavior) tại System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands (entityCommand entityCommand, hành vi CommandBehavior)
tôi đang làm gì sai? Mọi trợ giúp sẽ được đánh giá cao.
EDIT: Tôi cố gắng để khởi MiniProfiler (MiniProfilerEF.Initialize();
) một lần nữa, trong các chủ đề mà nhiệm vụ backgroung được performd (trước khi bắt đầu DatabaseContext), và có một ngoại lệ bây giờ:
Không thể đúc tượng của gõ 'MvcMiniProfiler.Data.EFProfiledDbConnection' gõ 'System.Data.SqlClient.SqlConnection
trong thực tế, nó không phải là cần thiết để cấu hình các truy vấn trong thread nền, nhưng nó tai nạn toàn bộ chuỗi, vì vậy ứng dụng không hoạt động đúng cách và tôi phải xóa toàn bộ hồ sơ. Có cách nào để vô hiệu hóa nó cho rằng, nền, thread để ngăn chặn nó bị rơi?
Ngoại lệ thực sự là gì? –
NullReferenceException –
Bạn đã xác nhận rằng bạn không chuyển null vào bất kỳ chức năng nào trong số đó? –