如果我使用通用成员资格提供程序和单独的数据库,实体框架并为EF 4.2启用Mini Profiler。当我第一次在我的主视图中检查用户凭据时,我收到错误{"There is already an object named 'Applications' in the database."}
。
如果我转动删除MiniProfilerEF.Initialize();
,我就会停止收到错误。
有什么想法吗?
我可以停止分析defaultconnection吗?
答案 0 :(得分: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
}