c# - 模型属性返回 null,但值存在于 db MVC5 EF 中

标签 c# asp.net-mvc entity-framework

我正在使用 MVC 5 学习 EF6 tutorial 。我知道可能有人问过这个问题,但我不确定我到底需要寻找什么?我检查了数据库,数据在那里?谁能指出我正确的方向?

我有一个问题,在我的 Model.Enrollments 中为空(此 View 采用学生模型),但是在数据库中它显示它在该表中具有值。

型号:学生

public int ID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
        public ICollection<Enrollment> Enrollments { get; set; }

类(class)

  public int ID { get; set; }
    public string Title { get; set; }
    public int Credits { get; set; }
    public ICollection<Enrollment> Enrollments { get; set; }

注册

public int ID { get; set; }
public decimal? Grade { get; set; }
public int StudentID { get; set; }
public int CourseID { get; set; }
public Student Student { get; set; }
public Course Course { get; set; }

异常(exception):

An exception of type 'System.NullReferenceException' occurred in App_Web_uycs14gs.dll but was not handled in user code

enter image description here 附加信息:未将对象引用设置为对象的实例。

数据库: enter image description here

更新-上下文

  public DbSet<Student> Students { get; set; }
       public DbSet<Course> Courses { get; set; }
       public DbSet<Enrollment> Enrollments { get; set; }
       protected override void OnModelCreating(DbModelBuilder modelBuilder)
       {
           modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();

最佳答案

如果您想延迟加载,则需要将导航属性更改为虚拟

public class Student
{
   //...
   public virtual ICollection<Enrollment> Enrollments { get; set; }
}

public class Course
{
  //...
  public virtual ICollection<Enrollment> Enrollments { get; set; }
}

public class Enrollment
{
  //...
  public virtual Student Student { get; set; }
  public virtual Course Course { get; set; }
}

检查这个post为了更好的解释。当您使用 POCO 实体类型时,延迟加载是通过创建派生代理类型的实例,然后重写 virtual 属性以添加加载 Hook 来实现的。

关于c# - 模型属性返回 null,但值存在于 db MVC5 EF 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31686865/

相关文章:

c# - 根据条件从列表中删除重复项

c# - 评估两个列表之间顺序差异的算法

c# - MEF更新导出的部件元数据(元数据 View 无效,因为属性有属性设置方法)

asp.net-mvc - MVC4 站点发布到 Somee

c# - 调用用户定义的数据库函数

c# - 在 MVC4 中使用 @Html.RenderAction 不显示页面

c# - 将 Azure AD 与 Identity Core (ASP.NET Core 2.1) 一起用作外部登录时无法获取用户组声明

asp.net-mvc - 缩小的脚本仅在MVC4 BundleConfig中

javascript - 在 ASP.NET MVC 中创建 _layout 和 View 之间可用的 jQuery "object"

entity-framework - 扩展 Entity Framework 模型