Невозможно привести объект типа «MvcMiniProfiler.Data.EFProfiledDbConnection» к типу «System.Data.SqlClient. SqlConnection.Невозможно привести объект типа «MvcMiniProfiler.Data.EFProfiledDbConnection» к типу «» System.Data.SqlClient.SqlConnection
Я пытаюсь перейти на MvcMiniProfiler 1.9.0, и я продолжаю получать это, когда я вызываю MiniProfilerEF.Initialize(). Я удалил раздел конфигурации system.data. Я не знаю, что я делаю неправильно. Я следил за шагами на сайте, но, может быть, я что-то пропустил?
Я использую первый код EF 4.1, и я передаю имя моей строки соединения в конструктор для создания моего datacontext.
Web Activator
using Project.Web.App_Start;
using WebActivator;
[assembly: PreApplicationStartMethod(typeof(MiniProfiler), "Start")]
namespace Project.Web.App_Start {
public class MiniProfiler {
public static void Start()
{
if (Eco.Environment.IsDevelopment) {
MiniProfilerEF.Initialize();
}
}
}
}
StructureMap реестра:
using Project.Domain.Repositories;
using StructureMap.Configuration.DSL;
namespace Project.Web.DependencyResolution.Registries {
public class RepositoriesRegistry : Registry {
public RepositoriesRegistry() {
For<IProjectDataContext>().HybridHttpOrThreadLocalScoped().Use(() => new ProjectDataContext(Eco.Database.Name));
}
}
}
DataContext Constructor:
public ProjectDataContext(string nameOrConnectionString)
: base(nameOrConnectionString) {
Active = new Active(this);
}
Я удалил System.Data dataproviders Фрон моей конфигурации, так как документация говорит, что нужно только для вызова MiniProfilerEF.Initialize().
** Обновление
Ранее в 1,7 MvcMiniProfiler я должен был установить Database.DefaultConnectionFactory собственность, но я удалил это. База данных.DefaultConnectionFactory всегда возвращается как SqlConnectionFactory, разве это не ProfiledConnectionFactory или что-то в этом роде?
Можете ли вы предоставить код + конфигурационный файл? Как правило, вы определяете строку подключения в файле конфигурации с тем же именем, что и ваш класс DBContext, и вам никогда не нужно использовать конструктор не по умолчанию. – Tejs
Iirc есть установка образца EF на nuget. Но: могу ли я спросить: всегда ли вы предоставляете ему профилированное соединение? Или вы иногда (возможно, в зависимости от пользователя) используете соединение с профилями, а иногда используете голый SQL-соединение? –
@MarcGravell Я сделал это с версией 1.7. Я бы переключился с профилированного соединения (Debug) на sql-соединение в (Release). Он работал нормально. –