現在、データベースプロバイダとしてnpgsqlを使用して、ASP.NETコアとEntityフレームワークコアを持つAPIを開発中です。私は2つのエンティティを持ち、1対多の関係を持っています。これは、「親コントローラ」が返すJSON結果に子エンティティのIdだけを含めることです。エンティティフレームワークコアの関連エンティティIDのみを含む
これらは私の実体である:
public class Meal {
public int Id { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public string UserId { get; set; }
public User User { get; set; }
public List<Picture> Pictures { get; set; }
public Meal() {
this.Pictures = new List<Pictures>();
}
}
public class Picture {
public int Id { get; set; }
public int MealId { get; set; }
public Meal Meal { get; set; }
public byte[] full { get; set; }
public byte[] small { get; set; }
}
は、しかし私は、これを実現する方法について確認していません。
public IActionResult Meals() {
var meal = this.context.Meals
.Include(m => m.Pictures.Select(p => p.Id))
.First();
return new JsonResult(meal);
}
これはしかし、InvalidOperationExceptionがスローされますが:昨日、私はこのような何かを示唆した別のSOの質問に出くわしました。 DbContextは非常に基本的ですが、onModelConfiguringはありません。なぜなら、このコードは私が知っている限り、これに準拠しており、対応する型の2つのDbSetsしかないからです。外部キーもデータベースで正しくあり、次のようなものを呼び出します。
var pictures = dbContext.Pictures.Where(p => p.MealId == mealId).ToList();
期待どおりに動作します。私は関連性があると思ったコードだけを含んでいます。より多くのものが必要な場合はそれを含めることにしますが、これは完全に私のクエリの制限された理解だと思う。
ありがとうございました!
これは完璧に見えます。私はそれを元に戻し、明日これを試してみる。ありがとうございました! – larzz11
クール、私はそれが他の人のための答えとしてそれをマークすることを確認するのに役立つ場合、私は他の誰かの時間を浪費しないようにコメントを入れて(私はその権利を知っている)。 –