簡體   English   中英

帶有構造函數調用的EF Core 2.1.1種子方法

[英]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的屬性(例如UsdPerHourDaysOfWork等)設置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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM