Необработанное исключение типа System.TypeInitializationException ' произошло в EntityFramework.файл DLL

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

брошенный ошибка:

необработанное исключение типа System.TypeInitializationException ' произошло в EntityFramework.dll файлы

дополнительная информация: инициализатор типа для ' System.Данные.Сущность.Внутренний.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:UsersAnkurDocumentsVisual Studio 2012ProjectsConsoleApplication1ConsoleApplication1binDebugConsoleApplication1.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:UsersAnkurDocumentsVisual Studio 2012ProjectsConsoleApplication1ConsoleApplication1Program.cs
:line 16

вот C# код:

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>

здесь пакеты.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>

5 ответов


читать сообщения:

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

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


проверьте, какая версия ссылки Entity Framework у вас есть в ваших ссылках, и убедитесь, что она соответствует вашему configSections узел . В моем случае это указывало на версию 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"/>

просто перейдите в Web.Config с :

configsections, он

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

<..>

настройте версию EntityFramework, которую вы установили, например. как версия 6.0.0.0"


проверьте, что в вашем проекте указана правильная версия. Е. Г. ДЛЛ это жалуются, может быть из старой версии и поэтому может быть несоответствие версий.


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

проверить XML referance переменная есть, Проверьте reg referance переменная есть, Убедитесь, что вы справитесь, если их там нет.