TeamCity 中的 EF6 和 MSTest:实体框架提供程序必须从此类继承,并且“实例”成员必须返回单例实例
Posted
技术标签:
【中文标题】TeamCity 中的 EF6 和 MSTest:实体框架提供程序必须从此类继承,并且“实例”成员必须返回单例实例【英文标题】:EF6 and MSTest in TeamCity: Entity Framework providers must inherit from this class and the 'Instance' member must return the singleton instance 【发布时间】:2015-07-29 14:35:36 【问题描述】:当 MSTest 在 teamcity 中运行时,我遇到了一些问题。当我在本地机器上的 VisualStudio 中运行它们时,一切正常。
[08:05:21][ProjName.Data.Tests.HistoryTableHandlingTest.HistoryProgressTest] 类初始化方法 ProjName.Data.Tests.HistoryTableHandlingTest.Init 抛出异常。 System.InvalidOperationException: System.InvalidOperationException : 实体框架提供程序类型的“实例”成员 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer, Version= 6.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089' 没有返回继承自“System.Data.Entity.Core.Common.DbProviderServices”的对象。 实体框架提供者必须从此类继承,并且“实例”成员必须返回提供者的单例实例。这可能是因为提供者不支持实体框架 6 或更高版本;有关更多信息,请参阅http://go.microsoft.com/fwlink/?LinkId=260882..
这是我用于 MSTest 项目的 app.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral" requirePermission="false" />
</configSections>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
</configuration>
我要提到的另一件事是,我不使用 NuGet 的 EntityFramework 库,而是克隆 EntityFramework.HierarchyId(它也可以在 NuGet 中找到)。
【问题讨论】:
您可以尝试使用标准的 EntityFramework 库来查看问题是否仍然存在?首先排除这种情况可能会有所帮助。 由于我在代码中使用 HierarchyId,这可能是个问题... 【参考方案1】:在我将所有测试重写为 NUnit 后,我得到了相同的结果。 但似乎,这种行为的主要原因是构建代理 MS Sql Server Express 没有正确安装。 当我重新安装最新版本的 SQL Express 时,一切都开始正常工作了。系统似乎缺少一些用于 LocalDB 的驱动程序或库。
我希望这对其他人有帮助。
【讨论】:
以上是关于TeamCity 中的 EF6 和 MSTest:实体框架提供程序必须从此类继承,并且“实例”成员必须返回单例实例的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 testNG 和 Allure 从 TeamCity 中的 Maven 运行测试