簡體   English   中英

實體框架核心-如何正確使用復合鍵映射關系?

[英]Entity Framework Core - How to correctly map relationships with composite key?

我有以下表格結構

設施

Id int (PK)
Name 

訪問

FacilityId int 
Hour int
Value

Visit具有組合鍵(FacilityId, Hour)

實體類定義為

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 Core WebAPI生成的JSON

[{"id":1,"name":"Facility1","visits":null},      {"id":2,"name":"Facility2","visits":null}]

問題:為什么訪問JSON為null? 我缺少什么配置?

提前致謝。

EF默認情況下已啟用“ 延遲加載”,這是您獲得"visits":null 但這很正常。 需要通過在查詢中使用.Include()函數來使用Eager加載。 請參閱docs,以獲取特定示例用法的快速加載。

此示例代碼getall FacilityVisits

 var allData =  context.Facility
               .Include(d => d.Visits)
               .ToList();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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