Ошибка при использовании UseInMemoryDatabase (xUnit)
Не могу разобраться почему возникает ошибка, при попытки подключить БД в памяти для тестов:
System.InvalidOperationException: No suitable constructor found for entity type 'JsonDocument'. The following constructors had parameters that could not be bound to properties of the entity type: cannot bind 'utf8Json', 'parsedData', 'extraRentedBytes', 'isDisposable' in 'JsonDocument(ReadOnlyMemory utf8Json, MetadataDb parsedData, byte[] extraRentedBytes, bool isDisposable)'.
Использую: .NET CORE 3.1. ЗАМЕЧУ, что при использовании сторонней БД - такой ошибки нет, все таблицы создаются корректно.
Дело в том, что ни одна модель для работы с БД не имеет свойства типа JsonDocument.
Возникает эта ошибка при создании БД, т.е. после удаления старой БД и добавления контекста новой:
public class MyAppFactory<TStartup> : WebApplicationFactory<TStartup> where TStartup : class
{
protected override void ConfigureWebHost(IWebHostBuilder builder)
{
builder.ConfigureServices(services =>
{
var descriptor = services.SingleOrDefault(
d => d.ServiceType == typeof(DbContextOptions<MyDbContext>));
if (descriptor != null)
services.Remove(descriptor);
services.AddDbContext<MyDbContext>(options =>
{
options.UseInMemoryDatabase("InMemoryDbForTesting");
});
var sp = services.BuildServiceProvider();
using (var scope = sp.CreateScope())
{
var scopedServices = scope.ServiceProvider;
var db = scopedServices.GetRequiredService<MyDbContext>();
//ВОТ ЗДЕСЬ ОШИБКА
db.Database.EnsureCreated();
}
});
}
}
В оригинальном же Startup.cs также добавляется AddIdentity, может проблема в этом? Как исправить?
services.AddIdentity<User, IdentityRole>()
.AddEntityFrameworkStores<MyDbContext>()
.AddDefaultTokenProviders();