【问题标题】:Entity framework null reference on foreign key object外键对象上的实体框架空引用
【发布时间】:2012-03-27 16:22:30
【问题描述】:

我正在使用 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”创建用户。随后创建一个假期,并将用户用户名字段设置为“用户 1”。所以我们有我们的关系。

如果我在为新的假期用户保存假期后查询数据库为空。

如果我处理掉 DbContext 并重新创建它。已设置假期用户的重新查询。

任何想法为什么会这样?

【问题讨论】:

  • 如果在Vacation 实体中将User 属性标记为[ForeignKey("UserUsername")],会发生什么情况?
  • @LadislavMrnka 我已经通过覆盖 dbContext 的 OnModelCreating 方法完成了映射
  • 我已经解决了这个问题,由于代表,我将在 6 小时内发布答案。

标签: entity-framework entity-framework-4 ef-code-first


【解决方案1】:

好的,让我试着解释一下问题所在。

微软表示如果启用延迟加载并且相关实体已经加载,则不会再次加载。

我认为是这种设计给我带来了问题。

我创建了我的新假期,将 UserUsername 设置为“User1”并点击保存。然后我在 DbContext 中查询新假期。由于该实体已在我的 DbContext 的上下文中加载,因此不会重新加载,因此 User 为空。

如果我创建了一个新的 DbContext 并运行相同的查询,则用户已填充。

我希望这是有道理的。

【讨论】:

  • 你能给我看看这个例子吗?我也面临这个问题
猜你喜欢
  • 2019-03-12
  • 1970-01-01
  • 2017-07-28
  • 1970-01-01
  • 1970-01-01
  • 2017-01-30
  • 2020-04-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多