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