【问题标题】:Entity Framework One Way Relationship .Net Core 3.1实体框架单向关系.Net Core 3.1
【发布时间】:2021-04-28 22:49:34
【问题描述】:

我在 PostgreSQL 中有以下表格:

entity_a:
  identifier integer, --PK
  name varchar(256),
  entity_b integer --FK

entity_b:
  identifier integer, --PK
  name varchar(256)

我的模型看起来像:

[Table("entity_a")]
public class EntityA
{
  [Column("identifier")]
  [Key]
  [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
  public int Identifier { get; set; }

  [Column("name")]
  public string Name { get; set; }

  [Column("entity_b")]
  [ForeignKey("EntityB")]
  public EntityB EntityB { get; set; }
}

[Table("entity_b")]
public class EntityB
{
  [Column("identifier")]
  [Key]
  [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
  public int Identifier { get; set; }

  [Column("name")]
  public string Name { get; set; }
}

当我从数据库中选择数据时,EntityA 中的EntityB 值始终是null。我只想要一种方式的关系,EntityA 知道EntityB。我做错了什么?

数据库中还设置了一个外键约束来建模关系。

我也尝试在EntityA 中创建Entity_B_Id 属性,但这仅设置Entity_B_Id 的ID,而不是实际对象(即EntityBnull):

[Table("entity_a")]
public class EntityA
{
  ...
  [Column("entity_b")]
  [ForeignKey("EntityB")]
  public int Entity_B_Id { get; set; }
  public EntityB EntityB { get; set; }
}

【问题讨论】:

    标签: entity-framework asp.net-core .net-core entity-framework-core asp.net-core-3.1


    【解决方案1】:

    EF Core 不会自动包含相关实体。所有相关实体必须要么被急切加载(通过包含)要么显式加载(加载)。

    参考文件:

    https://docs.microsoft.com/en-us/ef/core/querying/related-data/eager#eager-loading

    https://docs.microsoft.com/en-us/ef/core/querying/related-data/explicit#explicit-loading

    【讨论】:

      猜你喜欢
      • 2021-10-16
      • 1970-01-01
      • 1970-01-01
      • 2012-05-15
      • 1970-01-01
      • 2017-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多