[英]EF Core 2.1.1 Seed method with consturctor call
為什么在種子類的構造函數中設置的屬性等於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;
}
該值基於Seed的屬性(例如UsdPerHour
, DaysOfWork
等)設置BaseSalary
值。
從上面的代碼中,我在數據庫中的BaseSalary
屬性設置為“ 0”,所有行
我的問題是,當我開始播種數據時,構造函數中的CountBaseSalary
方法CountBaseSalary
被調用? 是否可以在此方法所需的行之后以某種方式運行方法CountBaseSalary
? 在哪里鑄造我的方法以獲得我想要的價值?
對於Class
,在Properties initialize
之前調用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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.