c# - EF Core 2.1.1 带有构造函数调用的种子方法
问题描述
为什么种子类的构造函数中设置的属性等于0?我有自己的种子方法:
public static void Seed(this ModelBuilder modelBuilder)
{
Random random = new Random();
int range = 20; // for doubles
int countOfWorkers = 10;
modelBuilder.Entity<Farm>().HasData(Farm.GetFarm());
for (int i = 0; i < countOfWorkers; i++)
{
modelBuilder.Entity<Driver>().HasData(
new Driver
{
// i belive that constructor launch in here
Id = i + 1,
FarmId = 1,
FirstName = "name" + i,
LastName = "lastname" + i,
UsdPerHour = Math.Round((random.NextDouble() * 20), 2),
HoursPerDay = random.Next(1, 23),
DaysOfWork = random.Next(1, 31)
});
}
}
Driver
类有一个构造函数:
public class Driver : Worker
{
// constructor
public Driver() => BaseSalary = CountBaseSalary();
public override double BaseSalary { get; set; }
//this propertys like UsdPerHours are in my abstract 'Worker' class
public override double CountBaseSalary() => UsdPerHour* HoursPerDay *DaysOfWork;
}
该设置值BaseSalary
基于 Seed 等的UsdPerHour
属性DaysOfWork
。
从上面的代码中,我BaseSalary
在数据库中的属性设置为“0”,所有行
我的问题是,CountBaseSalary
当我开始播种我的数据时,我的构造函数方法是否会被调用?是否有可能CountBaseSalary
在此方法所需的行之后以某种方式运行方法?在哪里使用我的方法来获得我想要的价值?
解决方案
因为Class
,Constructor
之前被调用过Properties initialize
。因此,您应该避免Constructor
基于其他属性设置属性值。
尝试
for (int i = 0; i < countOfWorkers; i++)
{
var driver = new Driver
{
// i belive that constructor launch in here
Id = i + 1,
FirstName = "name" + i,
LastName = "lastname" + i,
UsdPerHour = Math.Round((random.NextDouble() * 20), 2),
HoursPerDay = random.Next(1, 23),
DaysOfWork = random.Next(1, 31)
};
driver.BaseSalary = driver.CountBaseSalary();
modelBuilder.Entity<Driver>().HasData(driver);
}
推荐阅读
- javascript - 如何将自定义按钮添加到视频 js 播放器
- scala - 从Scala中的给定顶点计算凸图的面积
- java - I want to print even and odd number from an input array list
- oracle - dot notation in utplsql advanced data comparison
- javascript - 如何双击使用 JavaScript(引导程序)编写的输入文本框?
- amazon-web-services - How can I make API gateway only available to my ec2 instance?
- jquery - How to get Exact file location selected from tag
- stm32f4 - USART 收不到数据
- exception - 到达路线前的骆驼异常
- javascript - injecting ajax using ScriptInjector GWT