Я использую провайдер базы данных в памяти для интеграционных тестов, но я не могу обновить запись.Я запустил тот же код для реальной базы данных SQL, и все прекрасно обновляется.Вот мой код испытательного прибора.
Испытательный прибор:
public class TestFixture<TStartup> : IDisposable
{
private readonly TestServer _testServer;
public HttpClient TestClient { get; }
public IDatabaseService DbContext { get { return _testServer.Host.Services.GetService<DatabaseService>(); } }
public TestFixture() : this(Path.Combine("src")) { }
protected TestFixture(string relativeTargetProjectPatentDir)
{
Environment.SetEnvironmentVariable("ASPNETCORE_ENVIRONMENT", "Testing");
var builder = new WebHostBuilder()
.ConfigureServices(services =>
{
services.AddDbContext<DatabaseService>(options =>
options.UseInMemoryDatabase("TestDB")
.EnableSensitiveDataLogging());
})
.UseEnvironment("Testing")
.UseStartup<Startup>();
_testServer = new TestServer(builder)
{
BaseAddress = new Uri("http://localhost:5010")
};
TestClient = _testServer.CreateClient();
TestClient.BaseAddress = _testServer.BaseAddress;
}
public void Dispose()
{
TestClient.Dispose();
_testServer.Dispose();
}
}
Я провел большую часть дня в поисках этого продукта и не сталкивался ни с кем другим, кто говорил оэто так, я предполагаю, что это, вероятно, моя проблема, а не ошибка EF.Я уверен, что кто-то заметил бы БД, которую вы не можете обновить.