0
私はEntity Frameworkコア - コンポジットキーとの関係を正しくマップする方法
施設
Id int (PK)
Name
ログイン
FacilityId int
Hour int
Value
表Visit
が複合キー(FacilityId, Hour)
entiを持って、次のテーブル構造を持っていますTYクラスは私のDbContext
クラスがOnModelCreating
メソッドで次のように持っている
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; }
}
のように定義されています
[{"id":1,"name":"Facility1","visits":null}, {"id":2,"name":"Facility2","visits":null}]
私のASP.NetコアWebAPIのからここ
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);
は、得られたJSONある質問:なぜ訪問JSONはnullですか?どのような構成がありますか?
ありがとうございます。
構成は、おそらく大丈夫です。あなたが欠けているものは[関連データの読み込み]です(https://docs.microsoft.com/en-us/ef/core/querying/related-data)。 –
'Facility'を取得したときに' .Include'を使うべきです、EFはデフォルトでLazy Loadingを有効にしています。 –
@IvanStoevとM. Wisnicki迅速な対応とドキュメントへの私の指摘の両方に感謝します。私はコントローラにMissing .Includeを追加するとVisitsを返すことを確認できます。 – rams