【发布时间】:2017-01-30 23:48:05
【问题描述】:
我希望这不是我一直在寻找的重复,但我更多地关注这背后的原因。
我已经设置了一个用户对象。
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();
谢谢
【问题讨论】:
-
见Loading Related Entities。基本上在这里你需要预先加载,例如
var testuser = dbContext.User.Include(u => u.Status)....
标签: c# entity-framework