2011-07-23 4 views
11

Я пытаюсь получить MiniProfiler для профилирования доступа к базе данных, но у меня проблемы. Вся помощь, которую я вижу там, кажется, связана с «кодовыми» сущностями. Моя модель была разработана до того, как в этом году было доступно первое обновление кода, и я использовал конструктор для создания модели edmx. (Я использую это почти год и, похоже, работает для меня)MiniProfiler с EF «model first» edmx model

Пример на сайте документации MiniProfiler для меня не имеет смысла. Я пробовал несколько вариантов, но у меня проблемы.

Моя модель называется CYEntities, как правило, для создания экземпляра ObjectContext Я просто сделать это var context = new CYEntities() вот что я пытался профайлера ...

var dbConnection = new CYEntities().Connection; 
var profiledConnection = ProfiledDbConnection.Get(dbConnection); 
var context = profiledConnection.CreateObjectContext<CYEntities>(); // this is the context I'd finally use to access data. 

Это бросает исключение ...

System.ArgumentException: Не удается найти запрошенный поставщик данных .Net Framework. Он не может быть установлен.

Я не уверен, куда идти отсюда.

ответ

7

У меня тот же вопрос. Похоже, что вы должны добавить следующее в свой файл web.config, однако для меня это приводит к сбою процесса w3wp.exe (и веб-сервера в визуальной студии для локальных запросов). Это не похоже на то, что происходит с кем-либо еще, так что это может сработать для вас (обязательно вставьте фактическую версию профилировщика, который вы используете).

<system.data> 
    <DbProviderFactories> 
    <remove invariant="MvcMiniProfiler.Data.ProfiledDbProvider" /> 
    <add name="MvcMiniProfiler.Data.ProfiledDbProvider" invariant="MvcMiniProfiler.Data.ProfiledDbProvider" description="MvcMiniProfiler.Data.ProfiledDbProvider" type="MvcMiniProfiler.Data.ProfiledDbProviderFactory, MvcMiniProfiler, Version=1.7.0.0, Culture=neutral, PublicKeyToken=b44f9351044011a3" /> 
    </DbProviderFactories> 
</system.data> 
+0

Код этой ошибки: c00000fd, что указывает на исключение переполнения стека. –

+0

Хм, это меня немного ближе, я думаю, но у меня также есть исключение переполнения и авария w3wp.exe. Отладчик сказал, что он находится в файле mscorlib.dll. Любой шанс, что вы работаете в проекте Azure? – BZink

+0

Я заработал. Я добавил раздел system.data в web.config, но получал сбой w3wp.exe. Я ссылался на неверную версию system.data.entity в system.web-> compliation-> assemblylies. я изменил ... "System.Data.Entity, Version = 3.5.0.0, культура = нейтральной, PublicKeyToken = b77a5c561934e089" к System.Data.Entity, Version = 4.0.0.0, культура = нейтральной, PublicKeyToken = b77a5c561934e089 и это работает! – BZink

11

Попробуйте так:

var connectionString = ConfigurationManager 
    .ConnectionStrings["MyConnectionString"] 
    .ConnectionString; 
var ecsb = new EntityConnectionStringBuilder(connectionString); 
var sqlConn = new SqlConnection(ecsb.ProviderConnectionString); 
var pConn = ProfiledDbConnection.Get(sqlConn, MiniProfiler.Current); 
var context = ObjectContextUtils.CreateObjectContext<CYEntities>(pConn); 
+0

Я все еще получаю исключение ArgumentException для CreateObjectContext. Я не знаю о провайдерах данных. Мне нужно что-то в моем web.config? Является ли MiniProfiler новым поставщиком данных? – BZink

+0

@BZink, в вашей веб-конфигурации вам просто нужна строка подключения. –

+0

Да. Я добрался так далеко. ObjectContextUtils.CreateObjectContext выдает исключение: «Не удается найти запрошенный поставщик данных .Net Framework. Возможно, он не установлен. – BZink