Hallo,
ich habe mir ein Test-Projekt (Konsolenanwendung) mit einer Test-Datenbank angelegt. Das Problem besteht darin, dass
using (var context = new DataBaseContext())
{
context.MidiItems.Add(mI);
context.SaveChanges();
}
Hier das Model
public class MidiItem
{
public int ItemID {get;set;}
public string MyValue {get;set;}
}
Mein DataBaseContext:
public class DataBaseContext: DbContext
{
public DbSet<MidiItem> MidiItems{ get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlite(connectionString: "FileName =./Test_DataBase00.sqlite");
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.ApplyConfiguration(new MidiItemEntityConfiguration());
}
}
Meine MidiItemEntityConfiguration
public class MidiItemEntityConfiguration : IEntityTypeConfiguration<MidiItem>
{
public void Configure(EntityTypeBuilder<MidiItem> builder)
{
builder.HasKey(s => s.ItemID);
}
}
Und mein Program.cs-Code
static void Main(string[] args)
{
// var context = new DataBaseContext(); --> mein erster Versuch...
using (var context = new DataBaseContext())
{
context.DataBase.EnsureCreated();
}
MidiItem mI = new MidiItem();
mI.MyValue = "Test";
// context.MidiItems.Add(mI);
// context.SaveChanges(); --> erster Versuch....
using (var context = new DataBaseContext())
{
context.MidiItems.Add(mI);
context.SaveChanges();
}
}
Mehr Code habe ich bisher nicht.
Der Code läuft ohne Fehler durch - wenn ich einen Breakpoint setze, kann ich sehen, dass der Eintrag unter context-->local-->MidiItems auftaucht.
Leider landet der Wert nicht in der Datenbank.
Ich kann zwar die Struktur in SQLite-Studio sehen (ItemID | MyValue), aber das item wird nicht hinzugefügt.
Ich stehe gerade vollkommen auf dem Schlauch - in meinen wpf-Projekten habe ich das im Prinzip auch nicht anders gelöst - warum sollte es bei einer Konsolenanwendung nicht klappen.
Wenn ich Migrations anwende, sehe ich, dass die Struktur der Datenbank so wiedergespiegelt wird, wie sie auch intendiert ist. Habe ich evtl. eine Library nicht implementiert? Bisher:
- Microsoft.EntityFrameworkCore.SQLite 5.0.3
- Microsoft.EntityFrameworkCore.SQLite.Design 1.1.6
- Microsoft.EntityFrameworkCore.Tools 5.0.3
Gruß
vorph