gpt4 book ai didi

c# - Entity Framework 6 延迟加载不起作用

转载 作者:行者123 更新时间:2023-11-30 13:21:52 25 4
gpt4 key购买 nike

我创建了两个模型类:StudentExam

学生:

class Student
{
[Key]
public int StudentId { get; set; }

[Required, MaxLength(30)]
public string FirstName { get; set; }

[Required, MaxLength(50)]
public string LastName { get; set; }

[Required]
public DateTime BirthDate { get; set; }

public virtual ICollection<Exam> Exams { get; set; }
}

考试:

public enum Grade
{
A, B, C, D, E, F
}
class Exam
{
[Key]
public int ExamId { get; set; }

[Required]
public Grade Grade { get; set; }

[ForeignKey("Student"), Required]
public int StudentId { get; set; }

public virtual Student Student { get; set; }
}

但延迟加载似乎不起作用,这是我如何检索数据的示例:

using (var context = new StudentContext())
{
context.Configuration.LazyLoadingEnabled = true;
context.Configuration.ProxyCreationEnabled = true;

var student = context.Students.Single(s => s.LastName == "ABC");

foreach (var exam in student.Exams)
{
Console.WriteLine($"{exam.ExamId}: {exam.Grade}");
}
context.SaveChanges();
}

当我尝试访问 students.Exams 属性时,我得到了 NullReferenceException。我的代码有什么问题?

我的代码的问题是 Entity Framework 延迟加载不起作用,我不知道为什么。这不是关于不初始化 Exams,因为 Entity Framework 应该在我尝试访问 Exams 属性时单独

最佳答案

您没有关注 the rules使 Entity Framework 能够创建代理(延迟加载需要),这需要公共(public)访问:

A custom data class must be declared with public access.

将您的ExamStudent 公开,它应该可以工作。

关于c# - Entity Framework 6 延迟加载不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36159138/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com