首页 文章

TeamCity中的EF6和MSTest:实体框架提供程序必须从此类继承,'Instance'成员必须返回单例实例

提问于
浏览
0

当他们在teamcity中运行时,我遇到了MSTest的一些问题 . 当我在本地机器上的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'的'Instance'成员没有返回一个继承自'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中找到) .

1 回答

  • 0

    在我将所有测试重写为NUnit后,我得到了相同的结果 . 但似乎,这种行为的主要原因是,在构建代理MS Sql Server Express上没有正确安装 . 当我重新安装最新版本的SQL Express时,一切都开始起作用了 . 似乎系统缺少LocalDB的一些驱动程序或库 .

    我希望这会帮助别人 .

相关问题