Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 阻止webapi从关联表返回所有数据_Entity Framework_Asp.net Web Api_Entity Framework 6_Asp.net Mvc 5 - Fatal编程技术网

Entity framework 阻止webapi从关联表返回所有数据

Entity framework 阻止webapi从关联表返回所有数据,entity-framework,asp.net-web-api,entity-framework-6,asp.net-mvc-5,Entity Framework,Asp.net Web Api,Entity Framework 6,Asp.net Mvc 5,我有一个名为MemberCompany的表,其中有一个成员拥有的每个公司的记录。模型如下。当我通过传入memberid的webapi方法查询它时,我可以在调试模式下看到它返回该成员的一个公司,但是当我在浏览器中运行它时,我可以看到它也返回整个成员列表。是否可以只返回membercompany记录的集合而不返回两个引用的表?我注释掉了包含这两个表的初始代码,但它们似乎仍然包含在响应中 public partial class MemberCompany { public i

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

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; }
    }
公共部分类成员公司
{
公共int id{get;set;}
公共int成员身份\u id{get;set;}
公共字符串公司名称{get;set;}
公共字符串company_address1{get;set;}
公共字符串company_address2{get;set;}
公共字符串公司\u城镇\u城市{get;set;}
公共可空公司_county{get;set;}
公共字符串公司\邮政编码{get;set;}
公共字符串公司_tel{get;set;}
公用字符串公司\u传真{get;set;}
公共字符串公司_电子邮件{get;set;}
公共字符串公司_联系人{get;set;}
公共字符串company_web{get;set;}
公共字符串公司_country{get;set;}
公共可为空的上次更新{get;set;}
公共可空纬度{get;set;}
公共可空经度{get;set;}
公共虚拟县{get;set;}
公共虚拟成员成员{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();
            }
[HttpGet(“admin/api/membercompany/member/{member_id}”)]
public IEnumerable GetByMember(int member\u id)
{
var companys=db.membercompanys
//.包括(t=>t.县)
//.包括(t=>t.成员)
其中(m=>m.membership\u id==成员id);
返回公司;
}

关闭上下文的延迟加载。我最好的猜测是,当图形被序列化时,它处于打开状态,实体被加载


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

谢谢,但是,这是可行的,我如何构造查询以返回关联的成员而不是所有成员?我不确定我是否正确理解该问题,但如果您正在查找集合中的第一项,请尝试使用first,也许可以根据需要按某项进行排序?如果您仍然需要一个集合,但其中只有一个项目,或者如果在
members
集合中查找关联的
members
,包括您在注释代码中所做的集合,将显式加载它们,并且只会检索属于您选择的MemberCompany的
成员。