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