2012-02-03 63 views
2

如果我使用通用成員資格提供程序和單獨的數據庫,實體框架併爲EF 4.2啓用Mini Profiler。當我第一次在我的主頁視圖中點擊檢查用戶憑據時出現錯誤{"There is already an object named 'Applications' in the database."}如何將通用成員資格提供程序,EF和MiniProfiler一起使用?

如果我打開刪除MiniProfilerEF.Initialize();然後我停止收到錯誤。

任何想法?

我可以停止分析defaultconnection嗎?

回答

1

我一直在反對這個問題我的頭撞了一會兒。今天做了一些更多的挖掘,並能夠得到它的工作。這是我做的。在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 
    } 
相關問題