[英]EF 6 codde first - One To Many Mapping - ICollection always null
我知道這個問題以前曾被問過很多次,但我的行為舉止很奇怪,無法解決。
我正在使用EF6構建一個.Net應用程序,並首先編寫代碼。 我將類定義如下(這些是示例類,但結構完全相同):
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public int RefId { get; set; }
public int GradeId { get; set; }
public Grade Grade { get; set; }
}
public class Grade
{
private string _name;
public int GradeId { get; set; }
public string GradeName { get; set; }
public ICollection<Student> Students { get; set; }
}
我了解默認情況下,ef 4之后會默認啟用惰性加載,而最有效的解決方案是從實體(非虛擬屬性)中刪除virtual關鍵字。
就我而言,我想在Grade類的getter方法中設置一些自定義代碼,但是ICollection<Student> Students
始終為null。
例如:
public string GradeName
{
get
{
_name = Students.FirstOrDefault(s => s.GradeId == GradeId &&
s.RefId == 2).Name;
if (string.IsNullOrWhiteSpace(_name))
{
_name = Name;
}
return _name;
}
set => _name = value;
}
我盡一切可能,沒有任何幫助。 如果您能幫助我解決這個問題,那就太好了,謝謝!
您應該在構造函數中初始化學生,因為這是班級的職責:
public class Grade
{
public int GradeId { get; set; }
public string GradeName { get; set; }
public ICollection<Student> Students { get; set; }
public Grade ()
{
Students = new Collection<Student>();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.