Строка подключения с именем MyApplicationEntities не найдена в файле конфигурации приложения.

Я просто устанавливаю EF 4.3 и пытаюсь обновить свой проект с помощью миграции. однако у меня возникают проблемы с попыткой выполнить add-migration initial в моем проекте через консоль диспетчера пакетов.

Сейчас генерируется какое-либо исключение No connection string named 'MyApplicationEntities' could be found in the application config file.

Теперь в моем конфиге есть все

<connectionStrings>
<add name="MyApplicationEntities" 
     connectionString="metadata=res://*/DataModel.csdl|res://*/DataModel.ssdl|res://*/DataModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=localhost;initial catalog=MyApplicationEntitiesDB;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&quot;" 
     providerName="System.Data.EntityClient" />

I am not sure what is the issue is it a bug in EF 4.3 or there is something I am not doing right.

Я думал, что этот пост решил проблему но не совсем.

У любого есть ответ.

Цени Сандж.


person Sanj    schedule 11.06.2012    source источник


Ответы (9)


Ах, выяснил это случайно.

Мне пришлось удалить

public MasterEntities()
    : base("name=MyApplicationEntities")
    //      ^^^^^
{
}

to

public MasterEntities()
    : base("MyApplicationEntities")
{
}

EF 4.3 не любит, когда строка подключения вызывается name=xxxxx

person Sanj    schedule 11.06.2012
comment
Я пробовал это для своего файла Model.COntext.cs, но он вызвал исключение. - person micahhoover; 23.10.2012
comment
у вас есть строка подключения в вашем web.config или app.config с соответствующим именем? Это была распространенная ошибка, которую я делал изначально, поскольку мой объект контекста находился в другой DLL, информация о подключении не копируется автоматически в основной проект. - person Sanj; 25.10.2012
comment
Это не сработает, как вы так думаете. Если вы удалите часть Name =, будет создана база данных с этим именем :) - person Timotei; 08.11.2012
comment
Все, что он делает, это создает базу данных с тем же именем и в моем случае помещает ее в локальную установку Sql Server Express! Я хотел бы узнать ответ на этот вопрос. - person arame3333; 30.11.2012
comment
Это, вероятно, не будет решением, которое кто-либо ищет - таким образом, используя name =, вы указываете, что делаете сначала базу данных, тогда как его удаление будет сигнализировать о первом коде и имеет хорошие шансы выбросить UnintentionalCodeFirstException . - person bwerks; 14.04.2013
comment
Помогло и в EF 6.0 - лучше не нашел. - person makciook; 14.12.2013
comment
ПОЖАЛУЙСТА, НЕ ПРИМЕНЯЙТЕ это изменение. Это неправильное решение. У меня возникло исключение UnintentionalcodefirstException, как упоминалось в bwerks. - person Dhanuka777; 04.11.2014
comment
@ Dhanuka777 вау, это круто. Вы смотрели на метод OnModelCreating своей реализации DbContext? Очевидно, что ваше исключение UnintentionalCodeFirstException присутствует, вы не используете код сначала. - person Sanj; 05.11.2014
comment
Вдобавок ребята, просто определите порядок выполнения и посмотрите на сам код EF, EF ищет полностью оформленное имя DBContext-Name с информацией о контексте, а затем возвращается к именам ConnectionString, которые я указал выше, а затем к фактическим строка подключения передается. - person Sanj; 05.11.2014
comment
Привет, Сандж, без обид, дружище, я заблудился, сделав это исправление, которое вы предложили, удалив имя. Сначала я использую БД. Как только я внес изменение, проблема с сущностями не найдена исчезла, но теперь EF думает, что это сначала код, и выдает различные исключения, такие как упомянутые bwerks. Я разобрался с коренной проблемой. Проблема заключалась в том, что строка подключения Entities не была включена в мой webconfig в проекте WCF. Я был новичком в WCF и попытался поместить конфигурацию в конфигурацию приложения. Практическое правило - проверить, есть ли в appconfig / webconfig исполняемого проекта строку подключения Entities. - person Dhanuka777; 09.11.2014
comment
Спасибо, Сандж. Удаление Name = мне помогло. - person Ravi Kanasagra; 12.06.2015
comment
#Твердый! Спасибо, это сработало. EF6 - person dunwan; 08.06.2016
comment
Я решил эту проблему иначе. Первая миграция кода ищет файлы конфигурации. Конфигурационному файлу запускаемого проекта придается большее значение по сравнению с вашим текущим проектом / dll с миграциями. удаление Name = empty создаст новую базу данных - person Rishabh Jain; 14.12.2016
comment
Я предполагаю, что шаблон Code First из базы данных имеет ошибку, потому что по умолчанию он генерирует base("name=..."). - person user247702; 03.01.2018

Решение, как указал Сандж, состоит в том, что вам необходимо скопировать строку подключения из файла App.config проекта базы данных в файл web.config веб-проекта. Я не уверен, почему приведенный выше ответ отмечен как правильный. Я добавляю это как ответ вместо комментария, чтобы будущие читатели это заметили.

person Bill    schedule 06.05.2013
comment
Я знаю, что это работает, но у меня есть проект библиотеки классов и нет файла конфигурации - person Gautam Beri; 12.02.2014
comment
Мой пост относится к веб-приложениям, но, возможно, эта ссылка вам поможет. youtube.com/watch?v=rYK0B1CQUN8 Вам может потребоваться добавить информацию внутри class, если вы создали класс данных и решили не сохранять конфигурацию в файле конфигурации. - person Bill; 13.02.2014
comment
Спасибо! спас меня наверное 2 года и 35 минут тупых поисков! ‹3 - person Maximosaic; 13.05.2014

У меня была такая же ошибка, но у меня уже был файл web.config с правильным именем строки подключения и правильно объявленным DbContext. Однако я заметил, что, когда я запускал add-migration с -Verbose, он указывал, что «Startup Project» отличается от проекта, содержащего мой контекст. Итак, я изменил Startup Project, повторно запустил надстройку-миграцию, и все заработало !!

person Phil    schedule 28.01.2014
comment
При работе на EF 6.0 это решение сработало для меня. Вот еще одна страница, которую я нашел, которая дает дополнительный контекст: entityframework.codeplex.com/workitem/974 - person J.Hogan; 26.03.2014
comment
У меня получилось! Спасибо - person Flappy; 22.03.2015
comment
Спасибо - также, после установки его как Startup Project вам может потребоваться запустить Enable-Migrations с параметром -force, если вы перевели его в частично настроенное состояние. Не забудьте сначала сделать резервную копию любого кода в папке Migrations, так как он будет удален. Изучите трудный путь и благодарите Бога за контроль версий. - person Timothy Lee Russell; 05.07.2015
comment
Это тот, который у меня сработал. Я не могу поверить, что не заметил этого - person xerotolerant; 07.12.2016
comment
У меня были похожие проблемы. Прочитав это, я понял, что выбрал другой проект в решении в качестве стартового, когда проводил некоторые тесты. - person jimfromthegym - Jim Mackin; 13.01.2017
comment
Это очень важный ответ, потому что он решает неочевидную проблему, когда все кажется правильным. Также важный урок, который нужно помнить о многословном режиме :) - person Bartosz; 31.12.2019

Убедитесь, что в конфигурационном файле вашего проекта statup есть строка подключения. Это ссылка может вам помочь.

person Santosh Panigrahy    schedule 16.06.2015
comment
Ссылки имеют тенденцию меняться или пропадать. Не могли бы вы объяснить часть содержания или процитировать его здесь? - person abarisone; 16.06.2015
comment
Просто убедитесь, что в файле конфигурации Startup Project есть строка подключения или нет. Возможный сценарий - когда вы помещаете файл edmx в проект библиотеки классов, и на него есть ссылка в другом проекте. Таким образом, проект, установленный как запускаемый, должен иметь строку подключения. - person Santosh Panigrahy; 16.06.2015
comment
Ага! Спасибо @SantoshPanigrahy. Еще одна большая ошибка Microsoft - person Nick Devereaux; 15.09.2016

У меня тоже была эта проблема, и я решил ее

  1. Выбор правильного StartUp project.
  2. Повторный запуск команды в консоли диспетчера пакетов.

Все сложилось так, как ожидалось.

person xibabababa    schedule 18.05.2015

Я тоже столкнулся с аналогичным исключением. AppConfig изначально создается в проекте, в котором мы генерируем модель сущности. Но если вы выполняете приложение, используя какой-либо другой проект (в моем решении есть несколько проектов), AppConfig необходимо включить в проект, который выполняется.

person Dhanuka777    schedule 08.11.2013

 1. ctor => Context

   public MasterEntities()
    : base("ConnectionStringName")
{
}

 2. config file

   <add name="ConnectionStringName"
      connectionString="Data Source=.;Initial Catalog=DatabaseName;User Id=sa; Password=YourPass;"
      providerName ="System.Data.SqlClient" />

 3. in Sulation Exporer right click the project and select 'Set as
    startup project'

 4. in PackageManagerConsole Change Default Project to Your Project of
    context class.

 5. then:

add-migration new

или добавил ConnectionString в конфигурационный файл рабочего Project.

person MohammadSoori    schedule 21.10.2017
comment
Установить как Startup Project мне помог! Спасибо! - person Christian Müller; 26.05.2021

В моем случае у меня было два проекта:

введите описание изображения здесь

Мне просто нужно скопировать строку подключения из проекта DAL App.Config в проект WPF App.Config

person Renan Duarte    schedule 23.02.2021

Всем, кто прибывает сюда из-за того, что они получают эту ошибку при работе с WPF в Visual Studio, пожалуйста, ознакомьтесь с этим сообщением: Прекращает ли MVVM возможность для Visual Studio Designer отображать xaml?

person Telos    schedule 17.10.2018