类型为'System.TypeInitializationException'发生在EntityFram
本文关键字:EntityFram System 类型 TypeInitializationException | 更新日期: 2023-09-27 18:18:41
我正在尝试使用本教程学习实体框架和SQLite。然而,我得到一个错误。
抛出的错误是:下面是完整的错误跟踪:类型为"System"的未处理异常。TypeInitializationException' occurred in 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>
阅读留言:
每次只允许一个
<configSections>
元素如果存在,则必须是根<configuration>
元素的第一个子元素。
将configSections元素移到顶部——就在system. properties的上方。
检查您在参考文献中拥有的实体框架参考的哪个版本,并确保它与Web.config
文件中的configSections
节点匹配。在我的情况下,它是指向版本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"/>
从Main
文件夹转到Web.Config
文件夹,而不是Views
文件夹:
configSections
section name="entityFramework" type="System.Data. .....,Version=" <strong>5</strong>.0.0.0"..
& lt; . .>
调整已安装的EntityFramework的版本,例如:VERSION 6.0.0.0"
检查项目中是否引用了正确的版本。例如,它所抱怨的dll可能来自较旧的版本,这就是为什么可能存在版本不匹配的原因。
当我从控制台应用程序引用一个库项目时,这个库项目使用了一个在控制台应用程序中没有引用的nuget包,我就遇到了这个问题。在控制台应用程序中引用相同的包有助于解决此问题。
在静态类中如果您从XML或reg获取信息,则类尝试初始化所有属性。因此,您应该控制配置变量是否存在,否则属性将不会初始化,因此类。
检查xml引用变量是否存在,检查参考变量is是否存在,