我正在使用Entity Framework Code First v 4.3.0
我有一个具有一对多关系的两个实体
e.g。
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”创建用户。随后创建一个Vacation,UserUsername字段设置为“User1”。所以我们有了他们的关系。
如果我在保存假期后查询数据库,则新假期用户为空。
如果我处理了DbContext并重新启动它。假期用户的重新查询已设置。
为什么会出现这种情况?
答案 0 :(得分:2)
好的,让我试着解释一下问题所在。
Microsoft说如果启用了延迟加载并且已经加载了相关实体,则不会再次加载它。
我认为这种设计导致了我的问题。
我创建了我的新假期,将UserUsername设置为“User1”并点击保存。然后我查询DbContext的新假期。由于此实体已在我的DbContext的上下文中加载,因此不会重新加载,因此User为空。
如果我创建了一个新的DbContext并运行了相同的查询,则会填充用户。
我希望这是有道理的。