it-swarm.com.ru

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

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

Выдается ошибка:

Произошло необработанное исключение типа «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

Вот код 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>

Вот файл 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>
45
Joe Slater

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

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

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

80
Marc Gravell

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

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

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

0
Akbar Badhusha

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

configSections

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

<..>

РЕГУЛИРОВАТЬ ВЕРСИЮ EntityFramework, которую вы установили, напр. как версия 6 . 0.0.0 "

0
irfan akkas

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

0
Sujeet