c# - setup - sqlite visual studio 2008
Se produjo una excepción no controlada del tipo ''System.TypeInitializationException'' en EntityFramework.dll (5)
Estaba intentando aprender Entity Framework y SQLite usando este tutorial . Sin embargo, me sale un error.
El error arrojado es:
Se produjo una excepción no controlada del tipo ''System.TypeInitializationException'' en EntityFramework.dll
Información adicional: el inicializador de tipo para ''System.Data.Entity.Internal.AppConfig'' lanzó una excepción.
Aquí está el rastro de error completo:
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
Aquí está el código C #:
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
using (var context = new ChinookContext()) //error comes on this line
{
}
}
}
class ChinookContext : DbContext
{
}
}
Aquí está el archivo 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>
Aquí está el archivo 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>
Compruebe qué versión de la referencia de Entity Framework tiene en sus Referencias y asegúrese de que coincida con su nodo configSections
en el archivo Web.config
. En mi caso, estaba apuntando a la versión 5.0.0.0 en mis configSections y mi referencia era 6.0.0.0. Lo cambié y funcionó ...
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
En la clase estática, si obtiene información de xml o reg, la clase intenta inicializar todas las propiedades. por lo tanto, debe controlar si la variable de configuración está allí; de lo contrario, las propiedades no se inicializarán para la clase.
Verifique que la variable de referance xml esté allí, compruebe que la variable reg referance está allí, asegúrese de manejar si no están allí.
Leer el mensaje:
Solo se
<configSections>
elemento<configSections>
por archivo de configuración y, si está presente, debe ser el primer elemento secundario del elemento raíz<configuration>
.
Mueva el elemento configSections a la parte superior, justo arriba donde está actualmente system.data.
Simplemente vaya a Web.Config
desde Main
carpeta Main
, no desde Main
carpeta de Views
:
configSections
section name="entityFramework" type="System.Data. .....,Version=" <strong>5</strong>.0.0.0"..
<..>
AJUSTE LA VERSIÓN DE EntityFramework que ha instalado, ej. como la Versión 6 .0.0.0 "
Verifique que la versión correcta esté referenciada en su proyecto. Por ejemplo, la DLL de la que se queja, podría ser de una versión anterior y es por eso que podría haber una versión no coincidente.