我目前正在開發一個帶有npgsql作爲數據庫提供程序的ASP.NET核心和實體框架核心的API。我有兩個實體,他們有一對多的關係。問題是我只想在「父控制器」返回的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; }
}
不過,我不知道如何來實現這一目標。昨天我遇到了另一個SO問題,提示如下:
public IActionResult Meals() {
var meal = this.context.Meals
.Include(m => m.Pictures.Select(p => p.Id))
.First();
return new JsonResult(meal);
}
然而這會引發InvalidOperationException異常。 我的DbContext是非常基本的,沒有onModelConfiguring,因爲這個代碼遵循約定,據我所知,它只有兩個相應類型的DbSets。外鍵在數據庫中也是正確的,並且類似於:
var pictures = dbContext.Pictures.Where(p => p.MealId == mealId).ToList();
按預期工作。我只包括了我認爲相關的代碼。如果需要更多,我會包括它,但我認爲這完全是我對查詢的有限理解。
謝謝你的時間!
這看起來很完美。我會改回來,明天再試一試。謝謝! – larzz11
很酷,讓我知道它是如何運作的,如果它幫助你確保你將它標記爲別人的答案,如果不是,發表評論,所以我不浪費別人的時間(儘管我知道它的權利)。 –