Я надеюсь, что это не дубликат, как я искал, но я больше искал рассуждения об этом.Entity Framework Заполнение дочерних объектов с использованием внешнего ключа
Я создал объект пользователя.
public class User
{
public User()
{
}
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int UserID { get; set; }
public Guid UserGuid { get; set; }
public string Email { get; set; }
public string Name { get; set; }
public int CompanyID { get; set; }
public int StatusID { get; set; }
[ForeignKey("StatusID")]
public Status Status { get; set; }
public int RoleID { get; set; }
[ForeignKey("RoleID")]
public UserRole UserRole { get; set; }
}
Младенец объектов
public class UserRole
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int RoleId { get; set; }
public string Role { get; set; }
}
public class Status
{
[Key]
public int StatusId { get; set; }
public string Description { get; set; }
}
Когда я называю
var testuser = dbContext.User.Where(u => u.CompanyID == 1).FirstOrDefault();
Я получаю users.Status как нуль, но users.StatusID = 1.
однако, если я позвоню
var status = dbContext.Status.ToList();
var role = dbContext.UserRole.ToList();
var testuser = dbContext.User.Where(u => u.CompanyID == 1).FirstOrDefault();
затем вызвать testuser.Status, я могу видеть правильный объект, связанный с StatusId из 1.
Может кто-нибудь объяснить, почему это решило бы проблему, но и как я могу заставить его работать без необходимости вызвать заранее следующее ,
var status = dbContext.Status.ToList();
Благодаря
См. [Загрузка связанных объектов] (https://msdn.microsoft.com/en-us/data/jj574232.aspx). В основном здесь вам нужна активная загрузка, например. 'var testuser = dbContext.User.Include (u => u.Status) ....' –