C# 为什么首先从实体框架代码中的外键列获取数据?

C# 为什么首先从实体框架代码中的外键列获取数据?,c#,entity-framework,ef-code-first,C#,Entity Framework,Ef Code First,这是我的评论课程: [Table("Comment")] publicclass Comment { public Comment() { SubComments = new HashSet<SubComment>(); } public Guid ID { get; set; } public string text { get; set; } public virtual ICollection<SubCo

这是我的
评论
课程:

[Table("Comment")]
publicclass Comment
{
    public Comment()
    {
        SubComments = new HashSet<SubComment>();
    }

    public Guid ID { get; set; }
    public string text { get; set; }

    public virtual ICollection<SubComment> SubComments { get; set; }
}
[Table("SubComment")]
public class SubComment
{
    public Guid ID { get; set; }
    public Guid Comment_ID { get; set; }
    public string text{ get; set; }
    public virtual Comment Comment1 { get; set; }
}
这是在我的上下文中创建模型的
方法:

 modelBuilder.Entity<Comment>()
            .HasMany(e => e.SubComments)
            .WithRequired(e => e.Comment1)
            .HasForeignKey(e => e.Comment_ID);
为什么
注释
数据也显示
子命令
数据


我只需要
注释
数据

您是否检查了对象,或者您如何知道查询了导航属性?sql中是否有说明?您的查询不应该加入导航属性,除非您通过在调试器中检查它或枚举值来查询它。我只是从mvc中的sql中选择,当查看数据时,注释数据也会显示子元素数据。您如何查看这些子元素?在visual Studio中调试时,延迟加载将从数据库中为您加载这些子元素。它们实际上没有被检索。您是否检查了对象,或者如何知道查询了导航属性?sql中是否有说明?您的查询不应该加入导航属性,除非您通过在调试器中检查它或枚举值来查询它。我只是从mvc中的sql中选择,当查看数据时,注释数据也会显示子元素数据。您如何查看这些子元素?在visual Studio中调试时,延迟加载将从数据库中为您加载这些子元素。它们实际上并没有被检索到。
var test = DB.Comments.Where(w => w.text == "a");