이 질문은 여러 번 전에 물어 보았지만 내 측면에서는 이상한 행동을 보였으며 어떤 해결책도 얻을 수 없었습니다.EF 6 코드 첫 번째 - One To Many 매핑 - 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 이상 기본적으로 활성화되어 있음을 이해하고, 대부분의 작업이 솔루션이를 제거하기 위해 다음과 같이 나는 (이 예 클래스하지만 나는 정확히 같은 구조를 가지고) 내 클래스를 정의 엔티티의 가상 키워드 (비 가상 속성).
제 경우에는 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' ** 가상 **'ICollection 학생 {get; 세트; }' –
이것은 작동하지 않았습니다. getter 메소드 GradeName에서 Students는 항상 null입니다! –
'GradeName'을 호출하는'Grade' 인스턴스가 컨텍스트에서 가져 왔습니까? –