首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Effort与反向Poco生成器结合使用

如何将Effort与反向Poco生成器结合使用
EN

Stack Overflow用户
提问于 2019-03-13 16:45:54
回答 1查看 141关注 0票数 0

我是Visual Studio2017,EF6,我正在使用这个T4模板https://marketplace.visualstudio.com/items?itemName=SimonHughes.EntityFrameworkReversePOCOGenerator来生成我的上下文类

作为测试的铁杆粉丝,我已经有了100%的单元测试覆盖率,但现在我想做集成测试,我可以调用我系统的多个部分并通过更改-但当然我希望在不接触真正的磁盘数据库的情况下这样做。

因此,在搜索了一下之后,我找到了Effort https://entityframework-effort.net/,对我来说,这看起来正是我想要使用的。在那里我可以在内存中创建一个数据库,用我想要的任何fixture填充它,然后从系统的不同部分调用多个方法。然而,我试图找出的是如何在我的情况下工作,我已经尝试了DBConnectionFactory,EntityConnectionFactory,ObjectConnectionFactory,每次我得到错误信息:-

"EffortException:数据库尚未初始化“。

这是我在设置中使用的代码块:

代码语言:javascript
复制
   var newsCtx = Effort.DbConnectionFactory.CreatePersistent("2");
   _newsEntities = new NewsEntities(newsCtx);
   _newsEntities.Database.CreateIfNotExists();
   _newsEntities.Channels.Add(new Channel
   {
            Id = 1,
            Title = "Convenience Store - ",
            Link = "https://www.conveniencestore.co.uk/XmlServers/navsectionRSS.aspx?navsectioncode=123",
            Description = "https://www.conveniencestore.co.uk",
            Image = "https://www.conveniencestore.co.uk/magazine/dest/graphics/logo/logo.png",
            PublishedAt = null,
            UpdatedAt = DateTime.Now.AddDays(-2),
            Enabled = true,
            Type = "Rss_2_0",
            Author = null,
            Category = null,
            Copyright = null,
            Generator = null
   });
   _newsEntities.SaveChanges();

当我到达saveChanges时,我得到了一个异常,它建议我添加我已经做过的.CreateIfNotExists(),但是,我仍然得到这个错误。我可以在它工作的各种链接上看到示例和示例……然而,我不想放弃我的t4模板,因为它给了我想要的东西。

我有点迷茫,我想知道有没有人使用过反向poco生成器来创建上下文,并将其与努力一起使用。我喜欢两者都使用,如果有人能给我一个指针,这样我就可以在内存DB中进行像样的集成测试,我会很高兴的。

关于朱利安

这是Poco中从t4模板生成的方法

代码语言:javascript
复制
    public NewsEntities(System.Data.Common.DbConnection existingConnection)
        : base(existingConnection, true)
    {
        this.Database.Connection.Open();
    }
EN

回答 1

Stack Overflow用户

发布于 2019-03-13 19:04:49

好的,在查看了https://www.stevefenton.co.uk/2015/11/using-an-in-memory-database-as-a-test-double-with-entity-framework/这个链接之后,我开始想知道我的反向poco生成器在方法中的表现如何,我在方法中有以下内容

this.Database.Connection.Open();

这就是问题所在……从.ttinclude poco生成器中删除此行使Effort得以运行。我不知道为什么它会在那里,而且移除它似乎没有什么效果。

因此,我很高兴再次成为沙童,我可以继续使用内存数据库进行集成测试。如果你遇到这个问题,看看是否有人修改了你的t4模板来做一些不同的事情。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55137605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档