我的 API 請求有問題。我試圖從服務器到客戶端獲取整個物件,它被檢索,但沒有一些欄位。
這是它應該為 job object 獲取的內容,但問題是它以空值回傳:參見 photo-1
我提到成年人有那個特定的作業:見照片 2
我還嘗試重建遷移、資料庫或為物件擁有的所有內容添加一個 DbSet,但什么也沒有。
遇到這個問題,我無法更新或洗掉物件。
應該是什么?
uj5u.com熱心網友回復:
您需要為 Adult 和 Job/JobTitle 類添加物體類定義。原因可能是您沒有在兩者之間正確映射多對一關系,或者您禁用了延遲加載并執行了以下操作:
public class Adult
{
// ....
public Job JobTitle { get; set; } = new Job();
}
這將看到 EF 加載一個 Adult 但有一個初始化的空職稱。您應該只初始化一對多集合。
映射可以通過 DbContext OnModelCreating 中的 Attribute、EntityTypeConfiguration 或 modelBuilder 完成。根據您的模型假設,它應該類似于:
public class Adult
{
[Key]
public int Id { get; set; }
// Other properties...
[ForeignKey("JobTitleIdJob")]
public virtual Job JobTitle { get; set; }
}
public class Job
{
[Key]
public int IdJob { get; set; }
public string JobTitle { get; set; }
}
上面JobTitle上的FK使用了shadow屬性,或者你也可以在Adult中定義FK欄位,但是FK關系需要顯式映射,因為列名不符合型別的命名約定。(即 JobId 或 Job_Id)
如果您的關系設定正確,則可以在加載 Adult(s) 時快速加載職位。
var adult = context.Adults
.Include(x => x.Job)
.Single(x => x.Id == adultId);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/370627.html
