我是 C# 實體框架的新手。我創建了三個類 - 國家 - 區域 - 子區域Country 和 Area 之間存在多對多的關系。Area 和 Subarea 之間還有另一種多對多的關系。一個國家可以包含許多區域,但也有屬于多個國家的區域)。區域和子區域也是如此。我創建了相應的類,并且數據庫表已自動創建。CountryAreas 和 SubAreaAreas 的表也已創建,所以一切看起來都不錯。外鍵看起來也不錯。我可以通過(見下文)將數據寫入表中。我現在正在努力從數據庫中選擇具有相應區域和子區域的所有國家。我讀了幾篇文章,看起來我缺乏關于 LINQ 查詢和實體框架的基本知識。public class Country{ #region attributes [Key] public string Name { get; set; } public List<Area> Areas { get; set; } // virtual enabled lazy loading #endregion}public class Area{ #region attributes [Key] public string Name { get; set; } public virtual List<SubArea> Subareas { get; set; } public virtual List<Country> Countries { get; set; } #endregion}public class SubArea{ #region attributes [Key] public string Name { get; set; } public virtual List<Area> Areas { get; set; } #endregion}public class LocationScoutContext : DbContext{ public LocationScoutContext() : base("name=LocationScout") { } public DbSet<Country> Countries { get; set; } public DbSet<Area> Areas { get; set; } public DbSet<SubArea> SubAreas { get; set; }}// *** reading the data works fine ***using (var db = new LocationScoutContext()){ db.Countries.Add(newCountry); db.SaveChanges();}// *** I tried this ***var allCountries = new List<Countries>();using (var db = new LocationScoutContext()){ var query = from c in db.Countries select c;}foreach (var c in query){ allCountries.Add(c);}我嘗試了上面顯示的方法,但這顯然沒有做任何連接,只是給了我帶有空白區域和子區域的國家/地區的名稱。
1 回答

Qyouu
TA貢獻1786條經驗 獲得超11個贊
嘗試如下。這將給出所有countries
與它的areas
和subareas
。
對于 EF 6.x:
using (var db = new LocationScoutContext()) { var countries = db.Countries.Include(c => c.Areas.Select(a => a.SubAreas)).ToList(); }
對于 EF 核心:
using (var db = new LocationScoutContext()) { var countries = db.Countries.Include(c => c.Areas).ThenInclude(a => a.SubAreas).ToList(); }
- 1 回答
- 0 關注
- 123 瀏覽
添加回答
舉報
0/150
提交
取消