好的,所以我有两个模型教师和帐户:
public class Teacher : Person
{
[Key]
public Guid TeacherID { get; set; }
public Guid? AccountID { get; set; }
[Display(Name = "Hire Date")]
[DataType(DataType.Date)]
public DateTime? HireDate { get; set; }
public virtual ICollection<Classroom> Classrooms { get; set; }
public virtual Office Office { get; set; }
public virtual Account Account { get; set; }
}
public class Account
{
[Key]
public Guid AccountID { get; set; }
public Guid? TeacherID { get; set; }
public String Username { get; set; }
public String Salt { get; set; }
[DataType(DataType.Password)]
[Display(Name = "Password")]
public String SaltedPassword { get; set; }
[Display(Name = "Secert Question")]
public Guid SecertQuestionID { get; set; }
[Display(Name = "Answer")]
public String SecertAnswer { get; set; }
public Guid RoleID { get; set; }
public virtual SecertQuestion Question { get; set; }
public virtual Role Role { get; set; }
public virtual Teacher Teacher { get; set; }
}
当我运行 GetAll 查询时:
public IEnumerable<Account> GetAll()
{
return context.Accounts;
}
我的教师对象返回 null 而不是像我的 Role 和 SecertQuestion 对象那样填充。
我有假数据,可确保两个表中的 TeacherID 和 AccountID 具有相同的 GUID。此外,在我的上下文创建中,我正在使用此代码创建一个可选关系:
modelBuilder.Entity<Account>()
.HasOptional(a => a.Teacher)
.WithOptionalDependent(a => a.Account);
它是否正确?
所以我的问题是,当我为我的对象 Account 执行 GetAll() 时,为什么我的 Teacher 对象返回 null?是因为我的帐户对象有一个可以为空的教师对象与之关联吗?
更新:
所以在分析了我的数据库之后,我注意到在我当前的映射中,我的 Account 表正在创建一个名为 Teacher_TeacherID 的新外键。我该如何解决这个问题,同时在教师和帐户中保留我的导航映射(虚拟对象)。