Ответ 1
У меня была такая же проблема, когда моя запись <connectionString />
находится в верхней части Web.config, сразу после <configuration>
. Затем я попытался переместить его прямо перед </configuration>
, и он сработал.
Я пытаюсь включить миграции, но это исключение:
Проверка соответствия целевого объекта существующей базе данных... 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. Я прав? (Примечание: даже без этого раздела я все равно получаю то же исключение)
Что еще мне не хватает?
У меня была такая же проблема, когда моя запись <connectionString />
находится в верхней части Web.config, сразу после <configuration>
. Затем я попытался переместить его прямо перед </configuration>
, и он сработал.
Это в основном связано с конфигурационным файлом. Таким образом, фактическая трассировка стека, которая помогает, - "System.Configuration.ConfigurationErrorsException". Могут быть много причин, но все они включают исправление в файле конфигурации, как было сказано ранее. Пара возможностей, которые немного отличаются от этого, приведены ниже (Но стек действительно говорит нам)
Я встретился с той же проблемой. Моя проблема в том, что в файле Web.config есть строка с двойным соединением. как показано ниже:
<add name="DB1234" ..../>
<add name="DB1234" ..../>
Поэтому мы сначала должны проверить наш файл web.config!
Удачи!
проверьте правописание своего "connectionString" и убедитесь, что это "connectionStrings", я опустил 's' раньше в моем собственном случае. После добавления 's', которые решили его.
В моем случае, используя 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" />
в моем опыте, например, заключается в том, что вся информация, которая используется для установления соединения с базой данных, - это тот, который поступает из файла конфигурации, который находится в запуске-проекте, а не в том, что находится в проекте где я создаю или использую инструкции enable-migrations или update-database, например, у меня есть проект PRINCIPAL и еще один проект DATA, я использую проект DATA в качестве моего проекта по умолчанию только при запуске пакетов в диспетчере консоли Packager, но файл конфигурации это действительно используется в PRINCIPAL.
В моем случае у меня было несколько проектов в решении, а другой проект был задан как проект StartUp. Настройка проекта, который я пытался включить для миграции, поскольку проект StartUp разрешил его.
Включите это в <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, чтобы избежать этой ошибки.
Проверьте webconfig, например: у меня были настройки приложения, подобные этому:
<configuration>
<appSettings>
<add key="dhx_license" value="value"/>
</appSetting>
.....
и выбросил эту ошибку. Но потом я понял, что appSetting дублируется ниже, поэтому я переехал, и ошибка исчезла. Спасибо.