Voglio creare tabelle di database usando Entity framework core dalle classi POCO. Quando provo ad aggiungere un nuovo elemento impalcatura (opzione: pagine di rasoio che utilizzano Entity Framework (CRUD) in VS), c'è un errore che dice: "Nessun costruttore adatto trovato per il tipo di entità 'Uri'"
Ho imparato che (tra gli altri) Uri deve essere convertito in String nel metodo OnModelCreating (nella classe che eredita da dbContext).
Classe DbContext:
public class SchoolDbContext : DbContext {
public DbSet<Student> Students { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder) {
modelBuilder.Entity<Student>()
.Property(t => t.Homepage)
.HasConversion(
v => v.ToString(),
v => new Uri(v));
}
}
Classe studentesca:
public class Student {
public int ID { get; set; }
public Uri Homepage {get; set; }
}
So che il metodo OnModelCreating viene chiamato quando viene inserito il comando "Add-Migration Initial". Ma dal momento che ho provato a implementare automaticamente le classi CRUD, non posso inserire il comando "Aggiungi migrazione iniziale". Grazie mille e scusa il mio povero inglese ..
Alla fine ho trovato una soluzione al mio problema: sebbene abbia scritto una classe SchoolDbContext che ha ereditato da DbContext, non ho specificato quella specifica classe come Contesto per gli accessi al mio database. Quando si crea un nuovo elemento di impalcatura (pagine Razor utilizzando Entity Framework (CRUD)), viene richiesto di specificare la classe del modello e la classe di contesto. Invece di generare un nuovo contesto (cosa che ho sempre fatto) usando il pulsante '+', ho dovuto specificare la mia classe SchoolDbContext.