【问题标题】:Entity Framework returns every table from Azure DB instead of one实体框架从 Azure DB 返回每个表,而不是一个
【发布时间】:2017-04-19 12:16:48
【问题描述】:

我正在使用 ASP.NET 和现有的 Azure DB 构建 Web Api。我遇到了实体框架和 Azure DB 的问题。我使用 ADO.NET 从数据库中生成所有模型类,代码优先版本..

这是我使用 ADO.NET 生成的 dbcontext 的 sn-p:

public IntelliMonDbContext()
            : base("name=IntelliMonDbContext")
        {
        }

        public virtual DbSet<C__MigrationHistory> C__MigrationHistory { get; set; }
        public virtual DbSet<Device> Devices { get; set; }

在所有 dbset 属性之后,有一个名为 OnModelCreating 的方法。我不太确定那个是做什么的,但由于它是生成的,我认为这不是我的方法所在。

我的问题是,在我的 DevicesController 中,我试图以 JSON 格式返回我所有设备的列表,但它返回的是我的 Azure DB 中的所有表。我尝试查询数据库中的其他表而不是设备,但我得到了完全相同的结果。即使我尝试使用特定的设备 ID 进行请求,我也会在一个 JSON 对象中获得所有表。

// GET: api/Devices
        public IEnumerable<Device> GetDevices()
        {
            return db.Devices.ToList();
        }

我以前使用过 lokal Db 和实体框架,但从未遇到任何问题。我不明白上面的查询如何在一个 JSON 对象中为我提供数据库中的所有表。使用 ADO.NET 生成模型时,我是否错过了关键步骤?这里可能是什么问题?我已经尽我所能搜索类似的帖子,但我找不到任何匹配的内容,因为这感觉它是一件不应该出错的简单事情。

如果需要,我会提供更多信息。

【问题讨论】:

  • 对我来说听起来像是急切的加载。
  • 除非您正在做一些高级或模拟操作,否则请尝试从 DbSet 中移除虚拟。
  • 我试过了,但我的结果完全一样..还有其他建议吗?我不明白问题是什么。我与本地数据库合作过很多次,没有遇到过这样的问题。
  • @Maarten 谢谢你的回答。关于我应该做些什么来解决它的任何建议?

标签: c# asp.net json entity-framework azure


【解决方案1】:

原来是对象内部的 ICollections 这样做了。我只按照其他用户的建议从属性中删除了 virtual,但我错过了由 ADO.NET 自动生成的 ICollections。

感谢您的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-01
    • 2016-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-29
    相关资源
    最近更新 更多