gpt4 book ai didi

c# - 延迟加载 Entity Framework 5(代码优先)

转载 作者:行者123 更新时间:2023-11-30 20:59:06 24 4
gpt4 key购买 nike

我正在 C# 控制台应用程序中测试延迟加载。出于某种原因,延迟加载不起作用。

我检查了 context.Configuration 的 LazyLoadingEnabledProxyCreationEnabled 属性。他们是真的。

我的属性(property)是虚拟的

我已经检查了其他类似的 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; }
}

运行结果为:

Context Lazy True. Proxy Creation True

GroupId 186ebc8a-dec7-4302-9f84-5a575577baac, AttrSet is null = True

GroupId 186ebc8a-dec7-4302-9f84-5a575577baac, AttrSet is null = False

我确信加载的记录是正确的,并且它在数据库中有一个正确的 AttrSet

有什么想法吗?

更新

我创建了一个非常简单的测试项目,以防有人真的想查看代码。

参见:https://bitbucket.org/josea/eflazy (GIT:https://josea@bitbucket.org/josea/eflazy.git)。

最佳答案

代理生成没有发生。为什么??因为您的 POCO 是私有(private)的!! EF 看不到它们从中派生代理。将您的 POCO 公开,它将按您期望的方式工作。

public class Group

关于c# - 延迟加载 Entity Framework 5(代码优先),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15624437/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com