Подтвердить что ты не робот

Необработанное исключение типа "Исключение System.TypeInitializationException" произошло в EntityFramework.dll

Я пытался узнать Entity Framework и SQLite используя этот учебник. Однако я получаю сообщение об ошибке.

Выброшенная ошибка:

Необработанное исключение типа "Исключение System.TypeInitializationException" произошло в EntityFramework.dll

Дополнительная информация: инициализатор типа для "System.Data.Entity.Internal.AppConfig" сделал исключение.

Вот полная трассировка ошибок:

System.TypeInitializationException: The type initializer for 'System.Data.Entity.Internal.AppConfig' threw an exception. ---> System.Configuration.Configuration
ErrorsException: Configuration system failed to initialize ---> System.Configuration.ConfigurationErrorsException: Only one <configSections> element allowed per config file and if present must be the first child of the root <configuration>
element. (C:\Users\Ankur\Documents\Visual Studio 2012\Projects\ConsoleApplication1\ConsoleApplication1\bin\Debug\ConsoleApplication1.vshost.exe.config line 11)
   at System.Configuration.ConfigurationSchemaErrors.ThrowIfErrors(Boolean ignoreLocal)
   at System.Configuration.BaseConfigurationRecord.ThrowIfParseErrors(ConfigurationSchemaErrors schemaErrors)
   at System.Configuration.BaseConfigurationRecord.ThrowIfInitErrors()
   at System.Configuration.ClientConfigurationSystem.EnsureInit(String configKey)
   --- End of inner exception stack trace ---
   at System.Configuration.ClientConfigurationSystem.EnsureInit(String configKey)
   at System.Configuration.ClientConfigurationSystem.PrepareClientConfigSystem(String sectionName)
   at System.Configuration.ClientConfigurationSystem.System.Configuration.Internal.IInternalConfigSystem.GetSection(String sectionName)
   at System.Configuration.ConfigurationManager.get_ConnectionStrings()
   at System.Data.Entity.Internal.AppConfig..ctor()
   at System.Data.Entity.Internal.AppConfig..cctor()
   --- End of inner exception stack trace ---
   at System.Data.Entity.Internal.AppConfig.get_DefaultInstance()
   at System.Data.Entity.Internal.LazyInternalConnection..ctor(String nameOrConnectionString)
   at System.Data.Entity.DbContext..ctor()
   at ConsoleApplication1.ChinookContext..ctor()
   at ConsoleApplication1.Program.Main(String[] args) in c:\Users\Ankur\Documents\Visual Studio 2012\Projects\ConsoleApplication1\ConsoleApplication1\Program.cs
:line 16

Вот код С#:

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var context = new ChinookContext()) //error comes on this line
            {
            }
        }
    }

    class ChinookContext : DbContext
    {
    }
}

Вот файл App.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.data>
    <DbProviderFactories>
      <add name="SQLite Data Provider" invariant="System.Data.SQLite" description="Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
    </DbProviderFactories>
  </system.data>
  <connectionStrings>
    <add name="ChinookContext" connectionString="Data Source=|DataDirectory|Chinook_Sqlite_AutoIncrementPKs.sqlite" providerName="System.Data.SQLite" />
  </connectionStrings>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.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>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="v11.0" />
      </parameters>
    </defaultConnectionFactory>
  </entityFramework>
</configuration>

Вот файл packages.config:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="EntityFramework" version="5.0.0" targetFramework="net45" />
  <package id="System.Data.SQLite.x86" version="1.0.86.0" targetFramework="net45" />
</packages>
4b9b3361

Ответ 1

Прочтите сообщение:

Разрешен только один элемент <configSections> config, и если он должен быть первым дочерним элементом корневого элемента <configuration>.

Переместите элемент configSections в начало - чуть выше, где находится system.data.

Ответ 2

Проверьте, какая версия ссылки Entity Framework у вас есть в ваших ссылках и убедитесь, что она соответствует вашему файлу configSections node в Web.config. В моем случае это указывало на версию 5.0.0.0 в моих конфигурациях, и моя ссылка была 6.0.0.0. Я просто изменил его, и он сработал...

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

Ответ 3

Просто перейдите в Web.Config из Main, а не в папку Views Папка:

configSections

раздел name="entityFramework" type="System.Data. .....,Version=" <strong>5</strong>.0.0.0"..

<.. >

НАСТРОЙКА ВЕРСИИ EntityFramework, которую вы установили, например. как Версия 6.0.0.0 "

Ответ 4

Убедитесь, что в вашем проекте указана правильная версия. Например. DLL, на которую он жалуется, может быть из более старой версии и что может быть несоответствие версии.

Ответ 5

У меня была эта проблема, когда я ссылался на проект библиотеки из консольного приложения, и проект библиотеки использовал пакет nuget, который не упоминался в консольном приложении. Ссылка на тот же пакет в консольном приложении помогла решить эту проблему.

Видя Внутреннее исключение, может помочь.

Ответ 6

В статическом классе, если вы получаете информацию из xml или reg, класс пытается инициализировать все свойства. поэтому вы должны контролировать, есть ли переменная конфигурации, иначе свойства не будут инициализированы таким классом.

Проверить переменную refer xml есть, Проверить переменную референтной переменной есть, Убедитесь, что вы работаете, если их там нет.