這可能很簡單,但我卡住了,不知道如何解決它。我有兩個物體:
public class BaseEntity
{
public int Id { get; set; }
public DateTime CreatedDate { get; set; } = DateTime.Now;
public DateTime ModifiedDate { get; set; } = DateTime.Now;
public bool IsActive { get; set; } = true;
}
public class Vat : BaseEntity
{
public string Name { get; set; }
public decimal Rate { get; set; }
public Country Country { get; set; }
}
public class Country : BaseEntity
{
public string Name { get; set; }
public string Code { get; set; }
public ICollection<Vat> Vats { get; set; }
}
和定義:
public override void Configure(EntityTypeBuilder<Vat> builder)
{
base.Configure(builder);
builder.HasOne(e => e.Country).WithMany(e => e.Vats);
}
種子看起來像這樣:
modelBuilder.Entity<Country>().HasData(
new Country { Id = 1, Code = "FR", Name = "France" },
new Country { Id = 2, Code = "DE", Name = "Germany" },
new Country { Id = 3, Code = "CZ", Name = "Czech" }
);
modelBuilder.Entity<Vat>().HasData(
new Vat { Id = 1, Name = "23%", Rate = 23, IsActive = true, CreatedDate = DateTime.Now, ModifiedDate = DateTime.Now, Country = new Country { Id = 1 }, },
new Vat { Id = 2, Name = "8%", Rate = 8, IsActive = true, CreatedDate = DateTime.Now, ModifiedDate = DateTime.Now, Country = new Country { Id = 1 } },
new Vat { Id = 3, Name = "5%", Rate = 5, IsActive = true, CreatedDate = DateTime.Now, ModifiedDate = DateTime.Now, Country = new Country { Id = 1 } },
new Vat { Id = 4, Name = "0%", Rate = 0, IsActive = true, CreatedDate = DateTime.Now, ModifiedDate = DateTime.Now, Country = new Country { Id = 1 } }
);
但是,當我播種增值稅時,我得到了這個錯誤:
The seed entity for entity type 'Vat' cannot be added because it has the navigation 'Country' set. To seed relationships, add the entity seed to 'Vat' and specify the foreign key values {'CountryId'}.
知道播種增值稅物體并將其與國家/地區相關聯的正確方法是什么嗎?
uj5u.com熱心網友回復:
要為具有導航屬性的物體播種,您可以使用動態物件。這種方式應該有效:
modelBuilder.Entity<Vat>().HasData(
new List<object>
{
new { Id = 1, Name = "23%", Rate = 23, IsActive = true, CreatedDate = DateTime.Now, ModifiedDate = DateTime.Now, CountryId = 1 },
new { Id = 2, Name = "8%", Rate = 8, IsActive = true, CreatedDate = DateTime.Now, ModifiedDate = DateTime.Now, CountryId = 1 },
...
}
);
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/424198.html
