Я использую EF Core 3.1 и использую в памяти db для моих тестов xUnit. Я пытаюсь использовать то же самое в базе данных памяти в нескольких контекстах, как показано ниже.
DbContextOptionsBuilder _builder = new DbContextOptionsBuilder();
_builder.UseInMemoryDatabase("inMemoryDB");
var guid = Guid.NewGuid();
var parent = Parent(guid);
var child1 = new Child(1, guid);
var child2 = new Child(2, guid);
using (var context = new AdministrationContext(_builder.Options))
{
parent.Child.Add(child1);
parent.Child.Add(child2);
context.Parents.Add(parent);
context.SaveChanges();
}
using (var context = new AdministrationContext(_builder.Options))
{
// I can see saved parent object here as I am using AdministrationContext
var list = context.Parents.ToList();
}
using (var context = new ReferenceContext(_builder.Options))
{
// getting empty list here as I am using ReferenceContext
var list = context.Parents.ToList();
}
У меня также есть тот же родительский и дочерний объект в ссылочном контексте.
Из ссылочного контекста я получаю пустые родительские данные. Это нормально работает, когда я использую сервер sql.
Следует ли использовать UseInMemoryDatabase для одного типа контекста? Или мне что-то здесь не хватает.