一段時間以來,我一直在為以下問題感到困惑:我有一個品質和一個次級品質。現在我想使用 EF Core 為一種質量添加幾個子質量。我試圖盡可能地遵循檔案。
這是我的質量模型:
public class Quality
{
[Key]
[Required]
public string Name { get; set; }
public string? Description { get; set; }
public ICollection<QualitySublevel>? QualitySublevels { get; set; }
}
這是我的子質量模型:
public class QualitySublevel
{
[Key]
[Required]
public string Name { get; set; }
public string? Description { get; set; }
public string? QualityName { get; set; }
public Quality? Quality { get; set; }
}
然后,例如,我有質量的種子:
public void Configure(EntityTypeBuilder<Quality> builder)
{
builder.ToTable(Constants.Quality);
builder.HasData(
new Quality
{
Name = "Reliability",
Description = "",
},
....
并且對于子質量以下配置。這里重要的是嘗試將子質量分配給質量。
public void Configure(EntityTypeBuilder<QualitySublevel> builder)
{
builder.ToTable(Constants.QualitySublevel);
builder.HasData(
new QualitySublevel
{
Name = "Availability",
QualityName = "Reliability"
},
...
builder.HasOne(qs => qs.Quality)
.WithMany(quality => quality.QualitySublevels);
現在,當我進行遷移時,會為質量和子質量創建模型等。但是,在資料庫 (SQLite) 中,沒有使用質量 (QualityName) 的外鍵,但外鍵顯然是子質量的名稱。這意味著子質量的名稱是鍵和外鍵。當然,不會創建鏈接,也不會通過播種在質量中創建子質量的集合。此外,我已經嘗試添加 `.HasForeignKey(k => k.QualityName),不幸的是它沒有改變任何東西。不幸的是,我不明白為什么它不起作用,因為我查看了檔案并且已經探索了幾個問題。
uj5u.com熱心網友回復:
嘗試通過添加以下內容來配置您的質量物體:
builder.HasMany(q => q.QualitySublevels).WithOne().HasForeignKey("QualityName");
這會將您的 QualitySublevels 映射到您的 Quality 物體,并可能解決您在 QualitySublevels 物體中遇到的問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/519839.html
上一篇:列是串列或集合的SQL資料庫
