potresti dirmi perché nel mio DB ottengo 0
valori dopo il Seed method
? Ecco come appare:
public static void Seed(this ModelBuilder modelBuilder)
{
int countOfWorkers = 10;
for (int i = 0; i < countOfWorkers; i++)
{
modelBuilder.Entity<Driver>().HasData(
new Driver
{
// 10 same workers
Id = i + 1,
FarmId = 1,
FirstName = "name" + i,
LastName = "lastname" + i,
UsdPerHour = 7.2,
HoursPerDay = 8,
DaysOfWork = 31
});
}
}
E le mie classi di Models
:
public abstract class Worker
{
[Key]
public int Id { get; set; }
[ForeignKey("Farm")]
public int FarmId { get; set; }
public Farm Farm { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public virtual double UsdPerHour { get; set; }
public virtual int HoursPerDay { get; set; }
public virtual int DaysOfWork { get; set; }
public virtual double CountBaseSalary() => throw new NotImplementedException();
}
public class Driver : Worker
{
public Driver() => BaseSalary = CountBaseSalary();
public override double UsdPerHour { get; set; }
public override int HoursPerDay { get; set; }
public override int DaysOfWork { get; set; }
public override double CountBaseSalary() => UsdPerHour* HoursPerDay *DaysOfWork;
}
Sto usando EF Core 2.1.1
. Cosa ho fatto di sbagliato, che ottengo 0's
valori 0's
per le proprietà su Driver? Se necessario, posso aggiungere ulteriori informazioni.
Il mio DbContext
:
public class FarmDbContext : DbContext
{
public FarmDbContext(DbContextOptions<FarmDbContext> options) : base(options) { }
public DbSet<Farm> Farms { get; set; }
public DbSet<Worker> Workers { get; set; }
protected override void OnModelCreating(ModelBuilder builder)
{
builder.Entity<Driver>();
builder.Seed();
base.OnModelCreating(builder);
}
}
Se tutto il Worker
avrà UsdPerHour, HoursPerDay, DaysOfWork
allora non avrai bisogno di quei campi specificati in Driver
, saranno ereditati.
Se solo il Driver
bisogno di quei campi, allora dovrebbero essere rimossi dalla classe base Worker
.