c# – 努力单元测试实体框架6.1.3 DB-first
使用Effort框架(版本1.1.4)来单元测试我的DB层时遇到问题.
我有一个使用实体框架6.1.3的DB层,并且使用数据库优先方法创建模型,所以有一个描述模型的* .edmx文件. 我创建了一个部分类,以暴露单元测试使用的额外的构造函数,这样做的努力如下: public partial class Entities { public Entities(DbConnection connection) : base(connection,true) { } } 简单的单元测试如下所示: private Entities CreateContext() { //var connectionString = ConfigurationManager.ConnectionStrings["Entities"].ConnectionString; //var connection = Effort.EntityConnectionFactory.CreateTransient(connectionString); //return new Entities(connection as DbConnection); var connection = Effort.EntityConnectionFactory.CreatePersistent("name=Entities"); var context = new Entities(connection); return context; } [TestMethod] public void Testing_Effort_Integration() { using (var context = CreateContext()) { var entity = context.TableEntity.FirstOrDefault(i=> i.Id); Assert.IsNotNull(entity); } } 当我运行单元测试它会抛出一个例外: var connection = Effort.EntityConnectionFactory.CreatePersistent("name=Entities");
我发现的其他帖子建议将* .edmx文件中的“ProviderManifestToken”属性从“2012”更改为“2008”.这似乎解决了这个问题,但是在第一次尝试使用这个上下文的时候又提出了另一个例外: var entity = context.TableEntity.FirstOrDefault(i=> i.Id);
任何人都知道如何解决这个问题,所以我可以用实体框架的努力6.1.3 DB-first方法? 我已经成功地使用了努力(1.1.4版),以DB-first方法在EF 4和EF 5中创建的单元测试DB层,这就是为什么我认为EF版本可以感兴趣… 解决方法
我的同事找到了解决我的问题!
显然,我正在使用“努力”nuget包而不是“Effort.EF6”nuget包.卸载和安装其他之后,我也不得不更新我的App.Config与标签: <system.data> <DbProviderFactories> <add name="Effort.Provider" invariant="Effort.Provider" description="Effort.Provider" type="Effort.Provider.EffortProviderFactory,Effort" /> </DbProviderFactories> </system.data> <entityFramework> <providers> <provider invariantName="Effort.Provider" type="Effort.Provider.EffortProviderServices,Effort" /> </providers> </entityFramework> 而且我还在SetUp中打了一个电话,以进行单元测试来注册工作提供者: [SetUp] public void Setup() { EffortProviderConfiguration.RegisterProvider(); } 这解决了我的问题.希望可以为他人提供一些帮助! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |