MVC MiniProfiler с Entity Framework 5 Первая ошибка модели: невозможно определить имя поставщика - программирование
Подтвердить что ты не робот

MVC MiniProfiler с Entity Framework 5 Первая ошибка модели: невозможно определить имя поставщика

Использование Entity Framework 5, MiniProfiler 2. Nuget установлен для MiniProfiler.EF.

Создание соединения следующим образом

var conn = new EFProfiledDbConnection(DbConnections.GetSqlConnection(),                                                                      MiniProfiler.Current);
return new MyDbContext(conn, true);

При попытке получить данные с использованием DbContext возвращается следующая ошибка:

Unable to determine the provider name for connection of type     
'StackExchange.Profiling.Data.EFProfiledDbConnection'.`

Я попытался добавить следующее в web.config:

<system.data>
  <DbProviderFactories>
    <remove invariant="StackExchange.Profiling.Data.ProfiledDbProviderFactory" />
    <add name="StackExchange.Profiling.Data.ProfiledDbProviderFactory" 
         invariant="StackExchange.Profiling.Data.ProfiledDbProviderFactory" 
         description="StackExchange.Profiling.Data.ProfiledDbProviderFactory"
         type="StackExchange.Profiling.Data.ProfiledDbProviderFactory, MiniProfiler, Version=2.0.2.0, Culture=neutral, PublicKeyToken=b44f9351044011a3" />
  </DbProviderFactories>
</system.data>

Это не помогает. Я также попробовал варианты этого, используя различные EFProviderFactories в MiniProfiler.EntityFramework, но не смог заставить их работать.

Если я попытаюсь запустить MiniProfilerEF.Initialize(); в App_Start, тогда при попытке доступа к БД я получаю следующую ошибку:

Код, сгенерированный с использованием шаблонов T4 для базы данных First и Model First, может работать некорректно, если используется в режиме Code First. Чтобы продолжить использование базы данных First или Model First, убедитесь, что строка подключения Entity Framework указана в файле конфигурации исполняемого приложения. Чтобы использовать эти классы, которые были сгенерированы из Database First или Model First, с кодом First добавьте любую дополнительную конфигурацию с использованием атрибутов или DbModelBuilder API, а затем удалите код, который генерирует это исключение.

Удаление раздела DbProviderFactories из web.config и запуск MiniProfilerEF.Initialize_EF42(); в App_Start приводит к исходной ошибке.

Поскольку на странице MiniProfiler указано, что MiniProfilerEF.Initialize() предназначен только для кода, похоже, что это не способ пойти в любом случае.

Другой поиск не дал мне никаких других возможностей, кроме добавления в раздел Web.Config. Любые рекомендации о том, как действовать? Цель состоит в том, чтобы использовать модель First DbContext, профилированную Mvc MiniProfiler.

4b9b3361

Ответ 1

Как выглядит ваш global.asax?

public class MvcApplication : HttpApplication
{
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

        WebApiConfig.Register(GlobalConfiguration.Configuration);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
        AuthConfig.RegisterAuth();
        AutomapperConfig.RegisterMappings();

        MiniProfiler.Settings.SqlFormatter = new StackExchange.Profiling.SqlFormatters.SqlServerFormatter();
        MiniProfilerEF.Initialize();
    }

    protected void Application_BeginRequest()
    {
        if (Request.IsLocal)
        {
            MiniProfiler.Start();
        }
    }

    protected void Application_EndRequest(object sender, EventArgs e)
    {
        MiniProfiler.Stop(false);
    }
}

Я повторяю свой контекст обычным способом:

var _database = new DinoContext(_connectionString);