it-swarm.com.de

In EntityFramework.dll ist eine nicht behandelte Ausnahme des Typs 'System.TypeInitializationException' aufgetreten

Ich habe versucht, Entity Framework und SQLite zu lernen - dieses Tutorial zu verwenden. Ich bekomme jedoch einen Fehler.

Der Fehler ist:

In EntityFramework.dll ist eine nicht behandelte Ausnahme des Typs 'System.TypeInitializationException' aufgetreten

Zusätzliche Informationen: Der Typinitialisierer für 'System.Data.Entity.Internal.AppConfig' hat eine Ausnahme ausgelöst.

Hier ist die vollständige Fehlerspur:

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

Hier ist der C # -Code:

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

    class ChinookContext : DbContext
    {
    }
}

Hier ist die Datei 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>

Hier ist die Datei 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

Lies die Nachricht:

Es ist nur ein <configSections>-Element pro .__ zulässig. Konfigurationsdatei und falls vorhanden muss das erste untergeordnete Element des <configuration>-Elements sein.

Verschieben Sie das configSections-Element an die oberste Stelle - direkt oberhalb von system.data.

80
Marc Gravell

Prüfen Sie, welche Version der Entity Framework-Referenz Sie in Ihren Referenzen haben, und stellen Sie sicher, dass sie mit Ihrem Knoten configSections in der Datei Web.config übereinstimmt. In meinem Fall zeigte es in meinen configSections auf Version 5.0.0.0 und meine Referenz war 6.0.0.0. Ich habe es gerade geändert und es hat funktioniert ...

<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

Ich hatte dieses Problem, als ich ein Bibliotheksprojekt von einer Konsolenanwendung aus referierte. Das Bibliotheksprojekt verwendete ein Nuget-Paket, das in der Konsolenanwendung nicht referiert wird. Durch Verweisen auf dasselbe Paket in der Konsolenanwendung konnte dieses Problem behoben werden.

Die innere Ausnahme zu sehen kann hilfreich sein.

0
Akbar Badhusha

Gehen Sie einfach zu Web.Config aus dem Main-Ordner, nicht zu dem in Views-Ordner:

configSections

abschnitt name="entityFramework" type="System.Data. .....,Version=" <strong>5</strong>.0.0.0"..

<..>

Passen Sie die installierte Version von EntityFramework an, z. wie Version 6 . 0.0.0 "

0
irfan akkas

Stellen Sie sicher, dass in Ihrem Projekt auf die richtige Version verwiesen wird. Z.B. Die DLL, über die sie sich beschwert, könnte von einer älteren Version stammen und deshalb könnte es zu einem Versionskonflikt kommen.

0
Sujeet