我使用代碼先行先試延遲加載,車型如下,混淆延遲加載
class Team
{
public int ID { get; set; }
public string Name { get; set; }
public string Boss { get; set; }
public string City { get; set; }
public List<Player> players { get; set; }
public Team()
{
players = new List<Player>();
}
}
class Player
{
public int ID { get; set; }
public string Name { get; set; }
public int Number { get; set; }
public int Age { get; set; }
public Team team { get; set; }
}
和上下文喜歡這個,
class testContext : DbContext
{
public DbSet<Team> teamSet { get; set; }
public DbSet<Player> playerSet { get; set; }
}
我讀茱莉亞·勒曼的著作「編程實體框架」,並與懶加載混淆。當我寫如下的代碼,
using (var context = new testContext())
{
//context.Configuration.LazyLoadingEnabled = false;
//var teams = from t in context.teamSet.Include(p=>p.players) select t;
var teams = from t in context.teamSet select t;
foreach (var v in teams)
{
Console.WriteLine(v.players.Count());
}
Console.Read();
}
當執行foreach語句,我認爲v.players.Count()將達到數據庫,並返回我的價值,如果我禁用延遲加載,也不會擊中數據庫並將零返回給我。但無論我啓用延遲加載還是禁用延遲加載,該值始終爲零。我對延遲加載的理解是否錯誤?任何人都可以幫忙
虛擬是正確的關鍵字 – Tx3 2012-03-14 09:02:20