我正在 C# 控制台应用程序中测试延迟加载。由于某种原因,延迟加载不起作用。
我已经检查了 context.Configuration 的LazyLoadingEnabled
和ProxyCreationEnabled
属性。他们是真的。
我的财产是虚拟的。
我已经检查了其他类似的 SO 问题,但没有成功。我不确定会发生什么。
这是我的代码(简化为不显示命名空间):
static void Main(string[] args) {
Models.DataContext dc = new Models.DataContext();
Console.WriteLine("Context Lazy {0}. Proxy Creation {1} ",
dc.Configuration.LazyLoadingEnabled,
dc.Configuration.ProxyCreationEnabled);
var grp = dc.Groups.FirstOrDefault();
Console.WriteLine("GroupId {1}, AttrSet is null = {0}",
grp.AttrSet == null , grp.Id);
var grp2 = dc.Groups.Include("AttrSet").FirstOrDefault();
Console.WriteLine("GroupId {1}, AttrSet is null = {0}",
grp2.AttrSet == null, grp2.Id);
}
class Group {
public System.Guid Id { get; set; }
public string Name { get; set; }
public virtual AttrSet AttrSet { get; set; }
}
class AttrSet {
public System.Guid Id { get; set; }
public string Name { get; set; }
}
运行它的输出是:
上下文懒惰真。代理创建 True
GroupId 186ebc8a-dec7-4302-9f84-5a575577baac,AttrSet 为 null = True
GroupId 186ebc8a-dec7-4302-9f84-5a575577baac,AttrSet 为 null = False
我确信加载的记录是正确的,并且它AttrSet
在数据库中有正确的。
有任何想法吗?
更新
我创建了一个非常简单的测试项目,以防有人真正想查看代码。
请参阅:https ://bitbucket.org/josea/eflazy (GIT:https://josea@bitbucket.org/josea/eflazy.git)。