Я хочу создать базу данных SQLite в памяти.
Вот startup.cs
:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
services.AddDbContext<TestDBContext>().AddEntityFrameworkSqlite();
}
Вот модель базы данных:
public class TestModel
{
public string UserName { get; set; }
[Key]
public string id { get; set; }
}
Вот DBContext базы данных:
public class TestDBContext : DbContext
{
public virtual DbSet<TestModel> Test { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlite("Data Source=:memory:");
}
}
А вот контроллер:
private readonly TestDBContext TestDBContext;
public HomeController(ILogger<HomeController> logger,TestDBContext _TestDBContext)
{
_logger = logger;
this.TestDBContext = _TestDBContext;
}
public IActionResult Index()
{
TestDBContext.Database.EnsureCreated();
TestDBContext.SaveChanges();
TestDBContext.Test.Add(new TestModel() { User = DateTime.Now.ToString(),id=Guid.NewGuid().ToString() });
TestDBContext.SaveChanges();
return View(TestDBContext.Test.ToList());
}
Каждый раз, когда он работает, он сообщит об ошибке:
Inner Exception 1:
SqliteException: SQLite Error 1: 'no such table: Test'.
Я использовал EnsureCreated
и EnsureCreated
работает без ошибок. Почему все еще так?