Я запускаю несколько модульных тестов для проекта asp.net core 2.0, используя ядро EF и базу данных в памяти.
Я создаю базу данных следующим образом:
var serviceProvider = new ServiceCollection()
.AddEntityFrameworkInMemoryDatabase()
.BuildServiceProvider();
var builder = new DbContextOptionsBuilder<TDatabaseContext>();
builder.UseInMemoryDatabase(Guid.NewGuid().ToString())
.UseInternalServiceProvider(serviceProvider)
.EnableSensitiveDataLogging();
var context = new MyDatabaseContext(builder.Options);
Согласно этого поста (Как изолировать базу данных EF InMemory для теста XUnit) , используя отдельного поставщика услуг и используя разные имена для каждого экземпляра БД в памяти, должны гарантировать, что каждый тест имеет свой собственныйбаза данных, которая не используется другими тестами.
Однако мои тесты работают нормально, когда я запускаю их по отдельности, но не выполняются, если я запускаю их все вместе, с такими ошибками:
System.InvalidOperationException: экземпляр типа сущности SomeModelObject не может быть отслежен, поскольку другой экземпляр со значением ключа Id: 1 уже отслеживается.При подключении существующих объектов убедитесь, что подключен только один экземпляр объекта с данным значением ключа.
Есть ли что-то еще, что я должен сделать, чтобы убедиться, что контекст БД не является общим для разныхтесты?