我使用的是 Entity Framework Code First v 4.3.0
我有两个具有一对多关系的实体
例如
public class User
{
[Key]
public virtual string Username { get; set; }
public virtual ICollection<Vacation> Vacations { get; set; }
}
public class Vacation
{
public int Id { get; set; }
public virtual User User { get; set; }
public virtual string UserUsername { get; set; }
}
因此,场景是使用用户名“User1”创建用户。随后创建一个假期,并将 UserUsername 字段设置为“User1”。所以我们有我们的关系。
如果我在保存新假期用户的假期后查询数据库为空。
如果我处置 DbContext 并重新创建它。假期用户的重新查询已设置。
有什么想法吗?
最佳答案
好吧,让我尝试解释一下问题所在。
微软表示如果启用了延迟加载并且相关实体已经加载,则不会再次加载。
我认为正是这种设计给我带来了问题。
我创建了新的假期,将 UserUsername 设置为“User1”并点击“保存”。然后,我在 DbContext 中查询新假期。由于该实体已在我的 DbContext 上下文中加载,因此不会重新加载,因此 User 为 null。
如果我创建了一个新的 DbContext 并运行相同的查询,则填充了用户。
我希望这是有道理的。
关于entity-framework - Entity Framework 外键对象上的空引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9761906/