繁体   English   中英

与实体框架相关的实体的加载无需显式的“加载”或“包含”调用

[英]Entity Framework related entities are loaded without explicit Load or Include call

我有一个生成的实体模型,如下所示:

public partial class Entity
{
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
    public Entity()
    {
        this.Comments = new HashSet<Comment>();
        this.Fields = new HashSet<FieldEntity>();
    }

    public int ID { get; set; }
    public string Name { get; set; }
    public int AssigneeID { get; set; }
    public string Description { get; set; }
    public System.DateTime Created { get; set; }
    public int CreatedBy { get; set; }
    public System.DateTime LastEdited { get; set; }
    public int LastEditBy { get; set; }
    public bool Deleted { get; set; }
    public Nullable<System.DateTime> DeletedDate { get; set; }

    public virtual UserEntity Assignee { get; set; }
    public virtual UserEntity CreatedByUser { get; set; }
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
    public virtual ICollection<Comment> Comments { get; set; }
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
    public virtual ICollection<FieldEntity> Fields { get; set; }
    public virtual UserEntity LastEditByUser { get; set; }
}

当我使用EF LinqToSql提取此实体时,由于某种原因,即使我不使用此处指定的Include()Load() ,也会填充CommentsFields列表。

这是我使用的示例查询:

var entities = ctx.MyEntities.Single(x => x.ID == 1);

我认为默认行为是延迟加载相关实体,因此我试图确定查询或模型是否存在问题。

对于它的价值,我确实在我的解决方案中搜索了LazyLoadingEnabled ,并且应该将其启用:

//from MyDBModel.edmx
<EntityContainer Name="MyEntities" annotation:LazyLoadingEnabled="true">
...

默认情况下,在EF中启用了延迟加载。 如果要禁用它,则可以检查与同一主题相关的另一个问题的答案。

另外,您可以使用SQL Server Profiler工具确认代码是否正在执行延迟加载。 检查此链接以获取有关如何执行此操作的更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM