Код First не может активировать миграцию

Я пытаюсь включить миграции, но это исключение:

Проверка соответствия целевого объекта существующей базе данных... System.TypeInitializationException: инициализатор типа для "System.Data.Entity.Migrations.DbMigrationsConfiguration`1" сделал исключение. --- > System.TypeInitializationException: инициализатор типа для "System.Data.Entity.Internal.AppConfig" сделал исключение. --- > System.Configuration.ConfigurationErrorsException: Системе конфигурации не удалось инициализировать --- > System.Configuration.ConfigurationErrorsException: атрибут 'name' должен быть указан в теге раздела.

Я предполагаю, что файл App.config настроен неправильно (он был автоматически настроен, когда я добавил EF-пакет). Все, что я сделал, это добавить строку подключения:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>

  <section Name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
 <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --></configSections>

 <connectionStrings>
   <add Name="MyContext" connectionString="data source=MYSERVER;initial catalog=CodeFirstTest;user id=***;password=***;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
 </connectionStrings>

 <entityFramework>
   <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
     <parameters>
       <parameter value="v11.0" />
     </parameters>
   </defaultConnectionFactory>
   <providers>
     <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
   </providers>
 </entityFramework>
</configuration>

Я использую SQL Server 2008 R2.

Поскольку у меня есть строка подключения, я не верю, что мне нужна функция defaultconnectionfactory. Я прав? (Примечание: даже без этого раздела я все равно получаю то же исключение)

Что еще мне не хватает?

Ответ 1

У меня была такая же проблема, когда моя запись <connectionString /> находится в верхней части Web.config, сразу после <configuration>. Затем я попытался переместить его прямо перед </configuration>, и он сработал.

Ответ 2

Это в основном связано с конфигурационным файлом. Таким образом, фактическая трассировка стека, которая помогает, - "System.Configuration.ConfigurationErrorsException". Могут быть много причин, но все они включают исправление в файле конфигурации, как было сказано ранее. Пара возможностей, которые немного отличаются от этого, приведены ниже (Но стек действительно говорит нам)

  • Возможно, из-за причины может быть, что ваш проект, в котором включены миграции, может отличаться от проекта запуска. Поэтому обязательно добавьте -StartUpProject в свой комманд nuget.
  • Версия используемой структуры сущностей может быть разной в случае двух разных проектов.

Ответ 3

Я встретился с той же проблемой. Моя проблема в том, что в файле Web.config есть строка с двойным соединением. как показано ниже:

<add name="DB1234" ..../> <add name="DB1234" ..../> Поэтому мы сначала должны проверить наш файл web.config! Удачи!

Ответ 4

проверьте правописание своего "connectionString" и убедитесь, что это "connectionStrings", я опустил 's' раньше в моем собственном случае. После добавления 's', которые решили его.

Ответ 5

В моем случае, используя DevExpress MVC сгенерированный шаблон, ему нужно добавить дополнительные строки после <sectionGroup name="devExpress">...<sectionGroup/> в web.config

<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />

Ответ 6

в моем опыте, например, заключается в том, что вся информация, которая используется для установления соединения с базой данных, - это тот, который поступает из файла конфигурации, который находится в запуске-проекте, а не в том, что находится в проекте где я создаю или использую инструкции enable-migrations или update-database, например, у меня есть проект PRINCIPAL и еще один проект DATA, я использую проект DATA в качестве моего проекта по умолчанию только при запуске пакетов в диспетчере консоли Packager, но файл конфигурации это действительно используется в PRINCIPAL.

Ответ 7

В моем случае у меня было несколько проектов в решении, а другой проект был задан как проект StartUp. Настройка проекта, который я пытался включить для миграции, поскольку проект StartUp разрешил его.

Ответ 8

Включите это в <configSections>

<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />

В моем случае эта строка опускается, когда у меня есть два экземпляра Visual Studio open. Закройте все экземпляры Visual Studio, откройте и переустановите EF через интерфейс Nuget или Console, чтобы избежать этой ошибки.

Ответ 9

Проверьте webconfig, например: у меня были настройки приложения, подобные этому:

   <configuration> 
    <appSettings>
          <add key="dhx_license" value="value"/>
    </appSetting>
.....

и выбросил эту ошибку. Но потом я понял, что appSetting дублируется ниже, поэтому я переехал, и ошибка исчезла. Спасибо.