我有Employee,Address和Organization类。下面是详细信息
public partial class Employees
{
public Employees()
{
AddressDetails = new HashSet<AddressDetails>();
OrganizationDetails = new HashSet<OrganizationDetails>();
}
public string Id { get; set; }
public string FirstName { get; set; }
public string MiddleName { get; set; }
public string LastName { get; set; }
public ICollection<AddressDetails> AddressDetails { get; set; }
public ICollection<OrganizationDetails> OrganizationDetails { get; set; }
}
public partial class AddressDetails
{
public int Id { get; set; }
public string Address { get; set; }
public string Type { get; set; }
public string EmployeeId { get; set; }
public Employees Employee { get; set; }
}
public partial class OrganizationDetails
{
public int Id { get; set; }
public string Name { get; set; }
public string Location { get; set; }
public string EmployeeId { get; set; }
public Employees Employee { get; set; }
}
我使用了完全定义的关系,您可以看到Employee具有同时作为导航属性的AddressDetails和OrganizationDetails的集合。他们每个人都以相同的方式拥有EmployeeId和Employee。
我的问题是,当我尝试使用Include()获取Employee详细信息时,可以同时加载AddressDetails和OrganizationDetails,但是当我同时检查两个集合时,每个实体都再次加载了Employee信息,依此类推。
例如:如果我检查已加载的AddressDetails集合,则Address对象具有Employee的信息,并且该Employee再次具有AddressDetails和OrganizationDetails的集合。
请帮助我如何避免这种情况。我不想从AddressDetails和OrganizationDetails中删除Employee对象属性。无论如何,它可以与Include()一起使用。
这是我用来加载这些导航属性的查询。
列出员工= _context.Employees.Include(emp => emp.AddressDetails).Include(emp => emp.OrganizationDetails).ToList();