当前位置: 首页 > 知识库问答 >
问题:

实体框架-关联子类外键到父类主键

宋唯
2023-03-14

我想将类问题的外键FormId从列表子问题映射到类Form的主键。实体框架在子问题中没有建立这种关系。

我的形式类。

public class Form
{
    private readonly ICollection _questions = new List();

    public int Id { get; private set; }
    public string Title { get; private set; }
    public string Description { get; private set; }

    ...
}

我的问题课。

public class Question 
{
    private readonly ICollection _subquestions = new List();

    public int Id { get; private set; }
    public string Title { get; private set; }
    public bool Required { get; private set; }
    
    public int? QuestionParentId { get; private set; }
    public Question QuestionParent { get; private set; }

    public int FormId { get; private set; }
    public Form Form { get; private set; }

    ...
}

IEntityTypeConfiguration中的配置应该是什么样子?

共有1个答案

东郭展
2023-03-14

实体配置应如下所示

modelBuilder.Entity<Question>()
            .HasOne(q => q.Form)
            .WithMany(f => f._questions);

modelBuilder.Entity<SubQuestion>()
            .HasOne(s => s.Question)
            .WithMany(q => q._subquestions);

 类似资料:
  • 我有一个MasterUserApprovalOfficial实体,它有两个外键,MasterUserId和SoftwareSystemId。EF 7足够聪明,可以看出这两个属性是外键。这是我的MasterUserApprovalOfficial类 如果我查看创建的表,MasterUserId列按预期创建并命名,SoftwareSystemId列然而被创建为(类的名称附加到主键的名称) 有什么原因吗

  • 我正在使用实体框架管理我的sql server ce数据库。我希望我的表的主键由其他表的几个外键组成。我希望这样的事情能奏效: 但它会导致以下数据库迁移错误: 票据打印机。Bill::EntityType“Bill”没有定义键。定义此EntityType的键。Bills:EntityType:EntitySet“Bills”基于未定义键的类型“Bill”。 如何使表具有由这三个外键组成的主键?

  • 在实体框架中,我想使用两个外键作为另一个实体类型的主键。 但是,这会给我一个缺少键的错误。 我知道我可以定义另外两个属性来保存引用实体类型的主键。Visual Studio是否不够聪明,无法自行使用它们的主键?

  • 在一个双向关系中,我不能将子外键与父外键相关联。我有一个父类联盟是这样定义的: 子类ServiceCharge是这样定义的: 然后运行测试代码: 正如您所看到的,在将Union u持久化到数据库之后,我将这两个实体与一个控制器相关联,ServiceController.Add只是通过使用Union setter将实体charge1添加到servicecharges列表中,然后将该实体持久化到数据库

  • 问题内容: 这可能是太多基于意见的问题,但这里有: 我发现了与实体框架和数据库迁移有关的一个有趣的怪癖。看来,每当我们创建外键时,它也会在该列上创建索引。 我读了一个SO问题:实体框架代码第一个外键添加索引,每个人似乎都说这是一个很好的,有效的主意,但我不知道怎么做。索引列是非常特定于环境的。例如,EF索引了我的表上几乎从来没有(〜1%)用于搜索的FK,并且也索引了源表,这意味着即使我加入其他表,

  • 问题内容: 我尝试通过使用实体框架连接MySql数据库,但Visual Studio不想生成* .edmx? 我在db中有1个表, -选择ado.net edm,- 选择从数据库生成 -选择 db-在这里我认为我应该选择表,但是 向导关闭 我尝试使用其他版本的EF,但是仍然无法正常工作。问题是什么? 我的软件: -Windows 7 * 64 -vs 2017社区 -mySql 8.0社区 问题答