0
我有以下的表結構實體框架核心 - 如何正確映射與複合鍵的關係?
設施
Id int (PK)
Name
訪問
FacilityId int
Hour int
Value
表Visit
具有複合關鍵字(FacilityId, Hour)
的ENTI TY類被定義爲
class Facility
{
public int Id { get; set; }
public string Name { get; set; }
public ICollection<Visit> Visits { }
}
class Visit
{
public int FacilityId { get; set; }
public int Hour { get; set; }
public int Value { get; set; }
public Facility Facility { get; set; }
}
我DbContext
類在OnModelCreating
方法如下:
modelBuilder.Entity<Facility>()
.ToTable("Facility")
.HasKey(f => f.Id);
modelBuilder.Entity<Facility>()
.HasMany(f => f.Visits)
modelBuilder.Entity<Visit>()
.ToTable("Visits")
.HasKey(v => new { v.FacilityId, v.Hour});
modelBuilder.Entity<Visit>()
.HasOne(a => a.Facility)
.WithMany(a => a.Visits)
.HasForeignKey(a => a.FacilityId)
.HasPrincipalKey(a => a.Id);
這裏是我的ASP.Net核心的WebAPI
[{"id":1,"name":"Facility1","visits":null}, {"id":2,"name":"Facility2","visits":null}]
問題產生的JSON:爲什麼訪問JSON爲空?我錯過了什麼配置?
在此先感謝。
配置可能是罰款。你缺少的是[加載相關數據](https://docs.microsoft.com/en-us/ef/core/querying/related-data)。 –
當你得到'Facility'時應該使用'.Include',EF默認打開Lazy Loading。 –
@IvanStoev和M. Wisnicki感謝您的快速反應,並指出我的文檔。我可以確認,在我的控制器中添加缺少的.Include現在返回訪問。 – rams