43

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

Он бросает любое исключение в настоящее время 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" /> 

Я не уверен, что этот вопрос это ошибка в EF 4.3 или есть что-то я не делаю правильно.

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

Любой получил ответ.

Оцените Сандж.

+0

Возможный дубликат [Ни одна строка соединения с именем «MyEntities» не может быть найдена в файле конфигурации приложения] (http://stackoverflow.com/questions/12622408/no-connection-string-named-myentities-could- be-found-in-the-application-config) – jbtule

ответ

97

Ах, понял это случайно.

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

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

в

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

EF 4.3 не нравится строка соединения называют name=xxxxx

+0

Я пробовал это в своем файле Model.COntext.cs, но это исключение. – micahhoover

+4

У вас есть connectionstring в вашем файле web.config или app.config с соответствующим именем? Это была распространенная ошибка, которую я сделал изначально, так как мой объект контекста находился в другой DLL, информация о подключении не копируется автоматически в основной проект. – Sanj

+5

EF 5.0 - тот же выпуск – Lu55

35

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

+1

Я знаю, что это работает, но у меня есть проект библиотеки классов и у меня нет файла конфигурации –

+1

Мое сообщение относится к веб-приложениям, но, возможно, эта ссылка вам поможет. http://www.youtube.com/watch?v=rYK0B1CQUN8 Возможно, вам потребуется добавить информацию внутри класса, если вы создали класс данных и решили не сохранять конфигурацию в файле конфигурации. – Bill

+0

Спасибо! спас меня, вероятно, 2 года и 35 минут глупых исследований! <3 – Maximosaic

2

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

25

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

+0

При работе на EF 6.0 это решение сработало для меня. Вот еще одна страница, которую я нашел, которая предоставляет несколько контекстов: http://entityframework.codeplex.com/workitem/974 –

+0

Работал для меня! Спасибо – Flappy

+0

Спасибо - также, после установки в качестве запуска проекта вам может потребоваться запустить Enable-Migrations с параметром -force, если вы получили его в частично настроенное состояние. Не забудьте сначала создать резервную копию любого кода в папке «Миграции», поскольку он будет удален. Изучите жесткий путь и благодарите за контроль источника. –

5

Я также имел эту проблему и решить ее

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

Вещи разработаны как ожидалось.

8

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

+0

Ссылки, как правило, меняются или исчезают, не могли бы вы объяснить часть содержимого или привести его сюда? – abarisone

+0

Просто проверьте, что в конфигурационном файле Startup Project есть строка подключения или нет. Возможный сценарий - это когда вы помещаете свой файл edmx в проект библиотеки классов, и на него ссылаются в другом проекте. Так что проект, заданный как запуск, должен иметь строку подключения. –

+0

Argh! Спасибо @SantoshPanigrahy. Еще одна отличная ошибка Microsoft –

0
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 в конфигурационный файл рабочего проекта.

Смежные вопросы

 Смежные вопросы