本文介绍了测试proejct测试将不会执行:无法识别的配置节的EntityFramework的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
当我尝试运行我的测试,我得到我的app.config下面的错误我的测试项目:
结果消息:
试验方法MYTESTPROJ.Repositories.MYREPO.MY_TEST抛出异常:
System.TypeInitializationException:对于System.Data.Entity.Internal.AppConfig'的类型初始值引发了异常。 --->
System.Configuration.ConfigurationErrorsException:配置系统初始化失败--->
System.Configuration.ConfigurationErrorsException:无法识别的配置节的EntityFramework。
(C:\\开发\\干线\\ MYTESTPROJ \\ BIN \\调试\\ MYTESTPROJ.dll.config 20行)
结果堆栈跟踪:
在System.Configuration.ConfigurationSchemaErrors.ThrowIfErrors(布尔ignoreLocal)
在System.Configuration.BaseConfigurationRecord.ThrowIfParseErrors(ConfigurationSchemaErrors schemaErrors)
在System.Configuration.BaseConfigurationRecord.ThrowIfInitErrors()
在System.Configuration.ClientConfigurationSystem.EnsureInit(字符串configKey)
---内部异常堆栈跟踪的结尾---
在System.Configuration.ConfigurationManager。prepareConfigSystem()
在System.Configuration.ConfigurationManager.GetSection(字符串sectionName)
在System.Configuration.ConfigurationManager.get_ConnectionStrings()
在System.Data.Entity.Internal.AppConfig..ctor()
在System.Data.Entity.Internal.AppConfig..cctor()
---内部异常堆栈跟踪的结尾---
在System.Data.Entity.Internal.AppConfig.get_DefaultInstance()
在System.Data.Entity.Internal.LazyInternalConnection..ctor(的DbContext背景下,字符串nameOrConnectionString)
在System.Data.Entity.DbContext..ctor(字符串nameOrConnectionString)
下面是我的app.config:
<?XML版本=1.0编码=UTF-8&GT?;
<结构>
<&是connectionStrings GT;
<添加名称=xxxConnection的connectionString =XXX的providerName =System.Data.EntityClient/>
< /&是connectionStrings GT;
<&运行GT;
< assemblyBinding的xmlns =瓮:架构 - 微软COM:asm.v1>
< dependentAssembly>
< assemblyIdentity名称=System.Web.Mvc公钥=31bf3856ad364e35文化=中性/>
< bindingRedirect oldVersion =0.0.0.0-4.0.0.0NEWVERSION =4.0.0.0/>
< / dependentAssembly>
< / assemblyBinding>
< /运行>
<&System.Data这GT;
< DbProviderFactories>
<清除NAME =MySQL的数据提供程序不变=MySql.Data.MySqlClient/>
<添加名称=MySQL的数据提供程序不变=MySql.Data.MySqlClient描述= TYPE =MySql.Data.MySqlClient.MySqlClientFactory,MySql.Data,版本= 6.8.3.0MySQL的净Framework数据提供程序。文化=中性公钥= c5687fc88969c44d/>
< / DbProviderFactories>
< /system.data>
<&的EntityFramework GT;
<供应商>
<供应商invariantName =MySql.Data.MySqlClientTYPE =MySql.Data.MySqlClient.MySqlProviderServices,MySql.Data.Entity.EF6,版本= 6.8.3.0,文化=中性公钥= c5687fc88969c44d>< /提供商GT;
< /供应商>
< /&的EntityFramework GT;
< /结构>
解决方案
您只需要在顶部添加configSections区域注册部分(可能需要改变EF版本)。
<?XML版本=1.0编码=UTF-8&GT?;
<结构>
< configSections>
<节名称=的EntityFrameworkTYPE =System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection,的EntityFramework,版本5.0.0.0 =文化=中性公钥= b77a5c561934e089requirePermission =FALSE/>
< / configSections>
<&是connectionStrings GT;
<添加名称=xxxConnection的connectionString =XXX的providerName =System.Data.EntityClient/>
< /&是connectionStrings GT;
<&运行GT;
< assemblyBinding的xmlns =瓮:架构 - 微软COM:asm.v1>
< dependentAssembly>
< assemblyIdentity名称=System.Web.Mvc公钥=31bf3856ad364e35文化=中性/>
< bindingRedirect oldVersion =0.0.0.0-4.0.0.0NEWVERSION =4.0.0.0/>
< / dependentAssembly>
< / assemblyBinding>
< /运行>
<&System.Data这GT;
< DbProviderFactories>
<清除NAME =MySQL的数据提供程序不变=MySql.Data.MySqlClient/>
<添加名称=MySQL的数据提供程序不变=MySql.Data.MySqlClient描述= TYPE =MySql.Data.MySqlClient.MySqlClientFactory,MySql.Data,版本= 6.8.3.0MySQL的净Framework数据提供程序。文化=中性公钥= c5687fc88969c44d/>
< / DbProviderFactories>
< /system.data>
<&的EntityFramework GT;
<供应商>
<供应商invariantName =MySql.Data.MySqlClientTYPE =MySql.Data.MySqlClient.MySqlProviderServices,MySql.Data.Entity.EF6,版本= 6.8.3.0,文化=中性公钥= c5687fc88969c44d>< /提供商GT;
< /供应商>
< /&的EntityFramework GT;
< /结构>
When I try to run my test I get the following error in my app.config for my test project:
Result Message:
Test method MYTESTPROJ.Repositories.MYREPO.MY_TEST threw exception:
System.TypeInitializationException: The type initializer for 'System.Data.Entity.Internal.AppConfig' threw an exception. --->
System.Configuration.ConfigurationErrorsException: Configuration system failed to initialize --->
System.Configuration.ConfigurationErrorsException: Unrecognized configuration section entityFramework.
(C:\Dev\trunk\MYTESTPROJ\bin\Debug\MYTESTPROJ.dll.config line 20)
Result StackTrace:
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.ConfigurationManager.PrepareConfigSystem()
at System.Configuration.ConfigurationManager.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(DbContext context, String nameOrConnectionString)
at System.Data.Entity.DbContext..ctor(String nameOrConnectionString)
Here is my app.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="xxxConnection" connectionString="xxx" providerName="System.Data.EntityClient" />
</connectionStrings>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<system.data>
<DbProviderFactories>
<remove name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" />
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
<entityFramework>
<providers>
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>
</providers>
</entityFramework>
</configuration>
解决方案
You just need to add the configSections area at the top to register the section (you might need to change the EF version).
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<connectionStrings>
<add name="xxxConnection" connectionString="xxx" providerName="System.Data.EntityClient" />
</connectionStrings>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<system.data>
<DbProviderFactories>
<remove name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" />
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
<entityFramework>
<providers>
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>
</providers>
</entityFramework>
</configuration>
这篇关于测试proejct测试将不会执行:无法识别的配置节的EntityFramework的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!