了解しました。教師とアカウントの2つのモデルがあります。
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;
}
私のTeacherオブジェクトは、RoleやSecertQuestionオブジェクトのように入力されるのではなく、nullを返します。
2つのテーブルにTeacherIDとAccountIDのGUIDが同じであることを確認する偽のデータがあります。また、コンテキスト作成内で、このコードを使用してオプションの関係を作成しています。
modelBuilder.Entity<Account>()
.HasOptional(a => a.Teacher)
.WithOptionalDependent(a => a.Account);
これは正しいです?
だから私の質問は、オブジェクトアカウントに対してGetAll()を実行すると、Teacherオブジェクトがnullを返すのはなぜですか?アカウントオブジェクトにnull許容のTeacherオブジェクトが関連付けられているためですか?
アップデート:
したがって、データベースを分析した後、現在のマッピングで、AccountテーブルがTeacher_TeacherIDという新しい外部キーを作成していることに気付きました。TeacherとAccountの両方でナビゲーションマッピング(仮想オブジェクト)を保持しながら、これを修正するにはどうすればよいですか。