C# 从数据库加载内容会导致空变量.net MVC

C# 从数据库加载内容会导致空变量.net MVC,c#,asp.net-mvc,C#,Asp.net Mvc,我正试图从VisualStudio中的数据库中加载一些东西,这是可行的。但是,我得到的对象有一些空变量: 我正在加载类“ClauseComponent”的实例。此对象有2个类型为“ClauseComponent”的属性。这两个属性为空 截图: 存储库中的代码: Grade gr = grades.Include(l => l.DeterminateTableProp.ClauseComponent) .FirstOrDefault(g => g.GradeId == gra

我正试图从VisualStudio中的数据库中加载一些东西,这是可行的。但是,我得到的对象有一些空变量:

我正在加载类“ClauseComponent”的实例。此对象有2个类型为“ClauseComponent”的属性。这两个属性为空

截图:

存储库中的代码:

Grade gr = grades.Include(l => l.DeterminateTableProp.ClauseComponent)
    .FirstOrDefault(g => g.GradeId == gradeId);
ClauseComponent映射器中的代码:

public ClauseComponentsMapper()
{
    ToTable("ClauseComponents");

    // Primary key
    HasKey(c => c.ClauseComponentId);

    // Properties
    Property(c => c.ClauseComponentId)
        .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);

}
子句类中的代码(从ClauseComponent类继承):


这是什么原因造成的

很遗憾,我认为EF无法处理仅引用子类(TPH)的属性上的急切加载


有一些使用投影的变通方法,例如,但它们并不漂亮。

答案是我需要在ProjectContext类中禁用延迟加载:

//this.Configuration.ProxyCreationEnabled = false;

数据库中的空值?不,正如您在这里看到的:这是实体框架吗?调试它或使用Wireshark查看实际执行的查询。是的,这是实体框架。我会尽快发布查询。现在不在pc上。{从[dbo].[Grades]中选择[Extent1].[GradeId]作为[GradeId],[Extent1].[name]作为[name],[Extent1].[DeterminateTableProp_DeterminateTableId]作为[DeterminateTableProp_DeterminateTableId]。[Grades]作为[Extent1]}我应该在延迟加载时执行此操作,但是怎么做呢?试着去理解在同一个问题上的解决方法,我不认为这是同一个问题。
//this.Configuration.ProxyCreationEnabled = false;