entity-framework - Entity Framework 外键对象上的空引用

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

我使用的是 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/

相关文章:

c# - EF - 分离对象的持久性无知 - 最佳实践

c# - EF 代码优先 - IsConcurrencyToken()

C# Linq to Entities 获取日期范围包含当月日期的记录

entity-framework - 为什么设计者在从数据库更新模型时会创建两个 .Designer.cs 文件?

c# - 如何加载 IEnumerable<T> 类型的相关实体

linq-to-entities - Linq使用GroupBy时,包含不起作用

c# - Entity Framework 6 mysql rowversion

c# - 在 Linq to Entities 多列中排序

c# - 将分页逻辑从 SQL 转换为 Linq

C# 控制台项目无法添加对 EF 的引用