假设我的MVC应用程序中有两个模型:
考试
[Key]
public int ExamId { get; set; }
public ExamModel() => Questions = new List<QuestionModel>();
public List<QuestionModel> Questions { get; set; }
问题
[Key]
public int QuestionId { get; set; }
public string TheQuestionItself { get; set; }
我用它来将一些预定义的数据播种到DbInitializer中的数据库中
var questions = new Question[]
{
new Question{TheQuestionItself="Question 1"},
new Question{TheQuestionItself="Question 2"},
new Question{TheQuestionItself="Question 3"},
new Question{TheQuestionItself="Question 4"},
new Question{TheQuestionItself="Question 5"},
};
foreach (var i in questions)
{ context.Questions.Add(i); }
context.SaveChanges();
var exam = new Exam[]
{
new Exam{
Questions = new List<Question> {
context.Questions.Find(1),
context.Questions.Find(2),
context.Questions.Find(3),
}
},
new Exam{
Questions = new List<Question>{
context.Questions.Find(4),
context.Questions.Find(5),
}
},
};
foreach (var i in exam)
{
context.Exams.Add(i);
}
context.SaveChanges();
在调试应用程序时,Question模型数据将保存到数据库中,当然在Web应用程序中也是可见的。
考试似乎也是如此。但是,当我尝试在“考试”视图中获取问题时,“问题”字段似乎为空。 我用
@foreach(模型中的var i)
在视图中,并且在调试时,此foreach中两个考试的“问题”字段的计数均为0 /为空。
我提供了一些调试和数据库数据查看器的屏幕截图,以防万一; https://imgur.com/a/B9YbtHa
我已尽力寻找问题所在,但没有成功。也许以前曾多次问过这个问题,但我无法通过搜索的方式找到它,所以很抱歉这又是一个重复的问题。
答案 0 :(得分:0)
急于加载,您可以使用Include方法指定要包含在查询结果中的相关数据。使用以下代码。
_context.Exams.Include(x => x.Questions);