所以我是 Visual Studio 2017,EF6,我正在使用这个 T4 模板https://marketplace.visualstudio.com/items?itemName=SimonHughes.EntityFrameworkReversePOCOGenerator来生成我的上下文类
作为测试的忠实拥护者,我已经对单元测试有 100% 的覆盖率,但现在我想做集成测试,我可以调用系统的多个部分并通过更改 - 但当然我想这样做而不触及真正的磁盘数据库。
因此,经过一番搜索后,我找到了 Effort https://entityframework-effort.net/,对我来说,这正是我想要使用的。我可以在内存中创建一个数据库,用我想要的任何装置填充它,然后从我系统的各个部分调用多个方法。但是,我试图找出的事情是如何让它在我的情况下工作我尝试过 DBConnectionFactory、EntityConnectionFactory、ObjectConnectionFactory 并且每次我收到错误消息时:-
“EffortException:数据库尚未初始化”。
这是我在设置中使用的代码块:-
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 生成器来创建上下文并将其与 Effort 结合使用。我很想同时使用两者,如果有人可以给我一个指针,以便我可以在内存数据库中进行体面的集成测试,我会像沙子一样开心
问候朱利安
这是 Poco 中从 t4 模板生成的方法
public NewsEntities(System.Data.Common.DbConnection existingConnection)
: base(existingConnection, true)
{
this.Database.Connection.Open();
}