提问者:小点点

包括在EF C#中


我有三个表:成员,企业和企业地址

我可以使用Include获取会员的业务,但我正在尝试获取businessAddress,我猜这是在要求直接关系。 下面是我的模型:

[Table("member")]
public partial class Member
{
    public Member()
    {
        Business = new HashSet<Business>();
       // BusinessAddress = new HashSet<BusinessAddress>();

    }

    [Key]
    public int memberId { get; set; }
    public int chapterid { get; set; }
    public string title { get; set; }
    public string firstname { get; set; }
    public string lastname { get; set; }
    public bool IsActive { get; set; }
    public string classification { get; set; }
    public int SortOrder { get; set; }
    public virtual ICollection<Business> Business { get; set; }

   // public virtual ICollection<BusinessAddress> BusinessAddress { get; set; }
}

业务

[Table("Business")]
public partial class Business
{
    public Business()
    {
        BusinessAddress = new HashSet<BusinessAddress>();
    }

    [Key]
    public int BusinessID { get; set; }
    public int? categoryid { get; set; }
    public int? subcategoryid { get; set; }
    public int memberid { get; set; }
    public string businessname { get; set; }
    public string dealingin { get; set; }

    public int? sortOrder { get; set; }

    [ForeignKey("memberid")]
    public Member Member { get; set; }

    public ICollection<BusinessAddress> BusinessAddress { get; set; }
}

BusinessAddress

[Table("BusinessAddress")]
public partial class BusinessAddress
{
    [Key]
    public int businessaddressid { get; set; }

    public int businessid { get; set; }
    [ForeignKey("businessid")]
    public virtual Business Business { get; set; }
    public string address { get; set; }
}

下面是我的EF查询:

var list = _dbContext.Member.Include("Business").OrderByDescending(x => x.SortOrder).ThenBy(x => x.firstname).ToList();

我想获得商业和商业地址的成员。 我已经尝试了包含(“BusinesAddress”),但没有工作,请帮助我。


共1个答案

匿名用户

尝试使用include接受lambda选择器,后跟theninclude:

var list = _dbContext.Member
    .Include(m => m.Business)
    .ThenInclude(b => b.BusinessAddress)
    .OrderByDescending(x => x.SortOrder)
    .ThenBy(x => x.firstname)
    .ToList();

另外,您也可以通过include调用中追加所有需要的关系,但通常我建议不要这样做,因为第一种方法是类型安全的:

var list = _dbContext.Member
    .Include("Business.BusinessAddress")
    .OrderByDescending(x => x.SortOrder)
    .ThenBy(x => x.firstname)
    .ToList();