当我从数据库 Web Api .Net 中获取数据时的空列表

Posted

技术标签:

【中文标题】当我从数据库 Web Api .Net 中获取数据时的空列表【英文标题】:Empty List when i fetch data from database Web Api .Net 【发布时间】:2014-05-16 23:44:19 【问题描述】:

我正在使用带有存储库、Code First、Code First 迁移和 Web Api 的实体框架。我有 Town 和 City 类,它们看起来是这样的:

public class Town

    public int TownId  get; set; 
    public int CityId  get; set; 
    public string Name  get; set; 


public class City

    public int CityId  get; set; 
    public List<Town> Towns  get; set; 
    public string Name  get; set; 

    public City()
    
        Towns = new List<Town>();
    

这是我的 DbContext:

public class EFDbContext : DbContext

     public DbSet<City> Cities  get; set; 
     public DbSet<Town> Towns  get; set; 
  

这是我的种子方法[Configuration.cs(迁移文件夹)]

context.Cities.AddOrUpdate(s => s.Name,
            new City
            
                Name = "Pinar del Río",
                Towns = new List<Town>()
                
                    new Town() Name = "Consolación del Sur",
                    new Town() Name = "Guane",
                    new Town() Name = "La Palma",
                    new Town() Name = "Los Palacios",
                    new Town() Name = "Mantua",
                    new Town() Name = "Minas de Matahambre",
                    new Town() Name = "Pinar del Río",
                    new Town() Name = "San Juan y Martínez",
                    new Town() Name = "San Luis",
                    new Town() Name = "Sandino",
                    new Town() Name = "Viñales"

                
            
)

这是城镇表数据(数据库)

表城市数据(数据库)

这是我的仓库

public  class EFLocalizationRepository:ILocalizationRepository

    private EFDbContext context = new EFDbContext();

    public IQueryable<City> Cities  get  return context.Cities;  

    public List<Town> GetTowns(int cityId)
    
        var c = context.Cities.Find(cityId); //here ok
        var tws = context.Cities.Find(cityId).Towns; // but here is empty
        return tws;
    

当我获取城镇时,我得到一个空列表,为什么?

【问题讨论】:

你试过 var tws = c.Towns;我想不出你为什么得到一个空列表,但既然你已经得到了你想要的城市,为什么你不尝试得到它的城镇? 是的,我做到了。但都是一样的 如果你在变量c中设置了断点,然后开始debug,F10,右键c然后QuickWatch。你看到那里的城镇列表了吗? 是的,我做到了,但它是空的 那看起来很奇怪!既然你得到了正确的城市,但不是它的城镇?当你在这里说好的时,你的意思是 cityId=1 你得到了我们在你的桌子上显示的城市。对吗? 【参考方案1】:

你试过了吗

    var tws = context.Cities.Find(cityId).Towns.toList(); 

【讨论】:

这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方发表评论 - 您可以随时评论自己的帖子,一旦您有足够的reputation,您就可以comment on any post。 那么您可以检查是否启用了延迟加载。 我做了 Configuration.LazyLoadingEnabled = false;在我的 Context 课程中,什么都没有!

以上是关于当我从数据库 Web Api .Net 中获取数据时的空列表的主要内容,如果未能解决你的问题,请参考以下文章

当我从 Flutter 中的 API 获取数据时出现问题。请帮我获取数据并显示它。我这样的数据[关闭]

来自 web api 的 asp.net web 表单下拉列表

Json Formatting.Indented 使用 Web Api 控制器、ASP.NET MVC

在回流中,我如何从 asp.net web api 获取数据

为啥当包含控制器动作的数据时日期时间值会发生变化?使用 AngularJs 和 Asp.Net Web API 2

在 .NET Core 2 Web Api 中验证 JWT 后获取用户数据的最佳做法是啥?