【问题标题】:Prevent webapi from returning all data from associated tables阻止 webapi 从关联表返回所有数据
【发布时间】:2013-08-25 01:48:08
【问题描述】:

我有一个名为 MemberCompany 的表,其中包含成员拥有的每家公司的记录。模型如下。当我通过传入 memberid 的 webapi 方法查询它时,我可以在调试模式下看到它返回该成员的一个公司,但是当我在浏览器中运行它时,我可以看到它也返回整个成员列表。是否可以在没有两个引用表的情况下只返回成员公司记录的集合?我注释掉了包含这两个表的初始代码,但它们似乎仍然包含在响应中。

public partial class MemberCompany
    {
        public int id { get; set; }
        public int membership_id { get; set; }
        public string company_name { get; set; }
        public string company_address1 { get; set; }
        public string company_address2 { get; set; }
        public string company_town_city { get; set; }
        public Nullable<int> company_county { get; set; }
        public string company_postcode { get; set; }
        public string company_tel { get; set; }
        public string company_fax { get; set; }
        public string company_email { get; set; }
        public string company_contact { get; set; }
        public string company_web { get; set; }
        public string company_country { get; set; }
        public Nullable<System.DateTime> last_updated { get; set; }
        public Nullable<decimal> latitude { get; set; }
        public Nullable<decimal> longitude { get; set; }

        public virtual counties counties { get; set; }
        public virtual members members { get; set; }
    }

WebAPI

  [HttpGet("admin/api/membercompany/member/{member_id}")]
            public IEnumerable<MemberCompany> GetByMember(int member_id)
            {
                var Companies = db.MemberCompanies
                 //   .Include(t => t.counties)
                    //.Include(t => t.members)
                    .Where(m => m.membership_id == member_id);
                return Companies.AsEnumerable();
            }

【问题讨论】:

    标签: entity-framework asp.net-web-api entity-framework-6 asp.net-mvc-5


    【解决方案1】:

    关闭上下文的延迟加载。我最好的猜测是它已打开,并且在图形序列化时加载了实体......

    注意:这在网络应用程序中实际上是一个好主意,我建议您在全局范围内这样做,这样您就不会因为稍后的延迟加载而受到性能问题的困扰,并且始终准确地知道您将返回什么.

    【讨论】:

    • 谢谢,但是我将如何构造查询以返回关联的成员而不是所有成员?
    • 不确定我是否正确理解了这个问题,但如果您正在寻找集合中的第一个项目,请尝试使用 First,也许根据要求按某些东西订购?或者 Take(1) 如果您仍然想要一个集合但其中只有一个项目。
    • 或者如果在 members 集合中查找关联的 members,包括您在注释代码中所做的集合,现在将显式加载它们,并且只有属于的 members将检索您选择的 MemberCompany。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-02
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 2017-04-16
    相关资源
    最近更新 更多