SQLite im Arbeitsspeicher für EF-Core-Tests
- Matt
Der InMemory-Provider von EF Core ist keine Datenbank. Er kennt keine Fremdschlüssel, keine Eindeutigkeit und kein SQL, weshalb Tests grün sind und die Anwendung trotzdem kracht.
Näher dran ist SQLite im Arbeitsspeicher:
var verbindung = new SqliteConnection("DataSource=:memory:");
verbindung.Open();
var optionen = new DbContextOptionsBuilder<AppDbContext>()
.UseSqlite(verbindung)
.Options;
using var ctx = new AppDbContext(optionen);
ctx.Database.EnsureCreated();
Die Verbindung muss offen bleiben, sonst verschwindet die Datenbank. Constraints greifen, Transaktionen auch. Was weiterhin fehlt, sind Eigenheiten des echten Zielsystems, also etwa Datentypen von SQL Server.