【发布时间】:2017-02-28 13:10:34
【问题描述】:
应我的 Visual Studios 请求,我使用 Entity Framework Core (1.0.1) 开始了我的最新项目
所以编写我的数据库模型,因为我一直使用“虚拟”说明符来启用列表的延迟加载。虽然在加载父表时,子列表似乎永远不会加载。
父模型
public class Events
{
[Key]
public int EventID { get; set; }
public string EventName { get; set; }
public virtual List<EventInclusions> EventInclusions { get; set; }
}
儿童模型
public class EventInclusions
{
[Key]
public int EventIncSubID { get; set; }
public string InclusionName { get; set; }
public string InclusionDesc { get; set; }
public Boolean InclusionActive { get; set; }
}
向这些表中添加新记录似乎很有效,因为我习惯了可以将 EventInclusions 记录作为列表嵌套在事件记录中的位置。
虽然当我查询这张表时
_context.Events.Where(e => e.EventName == "Test")
问题
无论幕后的数据如何,EventInclusions 都会返回一个空值。
读了一点之后,我感觉这是我通常使用的 EF6 和 EF Core 之间的变化
我可以使用一些帮助来制作一揽子延迟加载声明或找出指定延迟加载的新格式。
卡兹
【问题讨论】:
-
您是否在上下文中启用了延迟加载?
-
嘿,Gusman,我在 EF6 中从来不需要这样做 - 我猜这可能是问题所在,因为在我的上下文中我与延迟加载无关
-
如果它们保留了相同的机制(我仍然没有将 EF 与核心一起使用),那么您必须在上下文的构造函数上设置
Configuration.LazyLoadingEnabled = true;和Configuration.ProxyCreationEnabled = true;。 -
EF Core 目前不支持自动延迟加载
-
这是一本好书,但读起来很痛苦……现在 100% 后悔升级了!