我傳遞值成採用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)));
和員工,位置和銀行都具有場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; }
}
如何'F','B'和'e'申報? SQL中的數據和代碼中的對象之間的實體框架中可能有不匹配嗎? – HeatfanJohn
@HeatfanJohn - 參見編輯爲它們是如何宣佈 –
@HeatfanJohn的例子 - 「在你的代碼在SQL數據和對象之間的錯配EF」,你能解釋一下你的意思是多一點嗎?顯然有一些映射錯誤,在我看來,這是SQL語句格式錯誤的結果。我不確定我的代碼是否導致聲明格式不正確。 –