我将值传递给一个使用 foreach 循环遍历集合的方法。在循环中,Include
使用从实体框架到预加载的语句。这是我传入的:
var exp = new Collection<Expression<Func<Foo,object>>>();
为什么当我使用它时:
exp.Add(f => f.Bars.Select(b=> b.Employees.Select( e=> e.Position)));
exp.Add(f => f.Bars.Select(b=> b.Employees.Select( e=> e.Bank)));
和 Employee、Position 和 Bank 都有字段Name
,它会在不同字段之间混淆 Name?如中,银行和职位都将在其姓名字段中包含员工姓名。更明确地说,无论出于何种原因
在数据库中:
Employee.Name = "Jon";
Employee.Bank.Name = "World Bank";
Employee.Position.Name = "CEO";
数据来自.Include
:
Employee.Bank.Name == "Jon" //true
Employee.Position.Name == "Jon" //true
额外信息,在接受 exp 的方法内部
DbSet<Foo> dbSet = context.Set<Foo>();
IQueryable<Foo> query = dbSet;
if (exp != null)
{
foreach (var incProp in exp)
{
query = query.Include(incProp);
}
}
我在我的代码中做错了吗?
编辑
public class Foo
{
public int FooId { get; set; }
public virtual List<Bar> Bars { get; set; }
}
public class Bar
{
public int BarId { get; set; }
public virtual Foo Foo { get; set; }
public int FooId { get; set; }
public virtual List<Employee> Employees { get; set; }
}
public class Employee
{
public int EmployeeId { get; set; }
public int BarId { get; set; }
public virtual Bar Bar { get; set; }
public int BankId { get; set; }
public virtual Bank Bank { get; set; }
public int PositionId { get; set; }
public virtual Position Position { get; set; }
public string Name { get; set; }
}
public class Bank
{
public int BankId { get; set; }
public string Name { get; set; }
}
public class Position
{
public int PositionId { get; set; }
public string Name { get; set; }
}