我使用代码先行先试延迟加载,车型如下,混淆延迟加载
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