在EntityFramework.dll中发生未处理的“System.TypeInitializationException”typesexception

我正在尝试使用本教程学习entity framework和SQLite 。 但是,我得到一个错误。

抛出的错误是:

在EntityFramework.dll中发生未处理的“System.TypeInitializationException”typesexception

其他信息:“System.Data.Entity.Internal.AppConfig”的types初始值设定项引发exception。

这是完整的错误跟踪:

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> 

阅读信息:

每个configuration文件只允许有一个<configSections>元素,如果存在,则必须是根<configuration>元素的第一个子元素。

将configSections元素移到顶部 – 刚刚位于system.data当前位置的上方。

检查您的参考文件中包含的entity framework参考版本,并确保它与Web.config文件中的configSections节点相匹配。 在我的情况下,它指向我的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"/> 

只需从Main文件夹中进入Web.Config ,而不是在Views文件夹中:

configSections

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

<..>

调整你已经安装的EntityFramework的版本,例如。 像版本6.0.0.0“

检查您的项目中是否引用了正确的版本。 例如,它所抱怨的DLL,可能来自旧版本,这就是为什么可能有版本不匹配。

在静态类中,如果您从xml或reg获取信息,则类尝试初始化所有属性。 因此,你应该控制,如果configurationvariables是否存在,否则属性将不会初始化,因此类。

检查xml参考variables是否存在,检查reg referancevariables是否存在,如果不存在,请确保您处理。