c# - EF Core 2.1.1 种子数据不适用于覆盖双精度
问题描述
你能告诉我为什么在我的数据库中我得到0
值之后Seed method
?这是它的样子:
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
});
}
}
还有我的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;
}
我正在使用EF Core 2.1.1
. 我做错了什么,我得到0's
了驱动程序上的属性值?如果需要,我可以添加更多信息。
我的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);
}
}
解决方案
如果全部Worker
都有,UsdPerHour, HoursPerDay, DaysOfWork
那么您不需要 中指定的那些字段Driver
,它们将被继承。
如果只Driver
需要这些字段,则应将它们从基类中删除Worker
。
推荐阅读
- java - 如何使用 vertx 调用外部 API 并将数据返回给 java 对象
- c# - 为什么 Mono Develop(Unity) 会自行从脚本中删除我的自定义定义指令?
- c# - 如何从 JSON 中获取没有键的空白值?
- android - 当我尝试在 Kotlin 中优化 init 语句时,我可以在哪里添加 try{...} 代码?
- mrtg - MRTG 值不匹配 snmwalk
- kubernetes - Kubernetes 中所有可能的状态/原因列表
- c# - Google API 用户凭据代码未在 ASP .NET Core 中使用 .Net Framework 4.6.1 执行
- php - Codigniter 3.1.9 的 PayPal 集成错误
- pandas - 如何只选择 pandas DataFrame 时间窗口中的最新值?
- angularjs - 当表单中存在任何自定义 ng-message 错误时,是否可以禁用 Angular js 中的按钮?