C# 实体框架相关实体的加载没有显式加载或包含调用

C# 实体框架相关实体的加载没有显式加载或包含调用,c#,entity-framework,C#,Entity Framework,我有一个实体模型生成如下: public partial class Entity { [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")] public Entity() { this.Comments = new HashSet<Comment>();

我有一个实体模型生成如下:

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; }
}
我认为默认行为是延迟加载相关实体,所以我试图找出我的查询或模型是否有问题

不管它值多少钱,我确实在我的解决方案中搜索了
LazyLoadingEnabled
,它应该是启用的:

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

默认情况下,EF中启用延迟加载。如果你想禁用它,你可以检查与同一主题相关的答案


此外,您还可以使用该工具确认代码是否正在执行延迟加载。有关如何执行此操作的详细信息,请检查此项。

您是如何得出结论的,即它们是立即加载的,而不是在访问集合/关系时加载的?@Igor如果在运行该查询后放置断点,我可以检查
实体
,并填充集合。我的印象是,如果不明确包括相关实体,它们将是空的或是空的。有没有更好的方法来验证它们是否确实是延迟加载的?@Sami我刚才试过了,调试检查看起来与
Single
相同。我刚刚在第二次调用中更正了一个输入错误。。但现在我开始怀疑我自己了。删除注释。@Igor您是对的,它们正在被延迟加载。只是当我通过调试器检查时,相关的实体会被加载,而不是生成某种null或异常。我有SQLExpress,所以我不得不使用它,但它在开箱即用的情况下工作得很好。@Michael很高兴知道这一点!
//from MyDBModel.edmx
<EntityContainer Name="MyEntities" annotation:LazyLoadingEnabled="true">
...