实体EF6包含对面

实体EF6包含对面

问题描述:

说先使用EF6代码。假设我们有一个简单的两表关系。 如果患者有一位医生相关。实体EF6包含对面

class Patient 
{ 
    [Key] 
    public int id { get; set; } 
    public string Name { get; set; } 
    [ForeignKey("Doctor")] 
    public int DoctorId { get; set; } 
    public virtual MedicalPersonel Doctor { get; set; } 
} 
class MedicalPersonel 
{ 
    [Key] 
    public int id { get; set; } 
    public string Name { get; set; } 
} 

当我加载病人时,有一个函数Include(字符串路径)来加载Doctor。但是如果医生包含像图像这样的大领域,如果我不想加载医生,那么包括什么会是相反的?

谢谢!

删除虚拟将延迟加载实体的关键字。然后,当您从数据库中获取Patient实体时,它不会加载相关的Doctor实体,除非您将其包含在查询中。 https://msdn.microsoft.com/en-gb/data/jj574232.aspx

+0

或者在查询中使用AsNoTracking – tede24

这是关于延迟加载的有趣部分,除非您访问属性,否则不会加载Doctor。为了完全确保你不“意外”懒加载任何你能

  1. 一起从你永远不希望延迟加载的属性中删除virtual关键字。

  2. 当你创建你的背景下,禁用延迟加载为DbContext的该实例:

    myContext.Configuration.LazyLoadingEnabled = false;

我想,说的是你的选择,当启用选项2号将是首选/禁用延迟加载。