Итак, я Visual Studio 2017, EF6, и я использую этот шаблон T4 https://marketplace.visualstudio.com/items?itemName=SimonHughes.EntityFrameworkReversePOCOGenerator для создания моего класса контекста
Будучи большим поклонником тестирования, у меня уже есть 100% охват модульными тестами, но теперь я хочу провести интеграционные тесты, где я могу вызвать несколько частей моей системы и пройти через изменения - но, конечно, я хочу сделать это не касаясь реальной дисковой БД.
Так что после поиска я нашел Усилие 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, который создает контекст, и использовал его в сочетании с усилием. Я хотел бы использовать оба, и если кто-то может дать мне указатель, чтобы я мог получить достойные интеграционные тесты, работающие с БД в памяти, я был бы так же счастлив, как сэндбой
С уважением, Джулиан
это сгенерированный метод в Poco из шаблона t4
public NewsEntities(System.Data.Common.DbConnection existingConnection)
: base(existingConnection, true)
{
this.Database.Connection.Open();
}