C# EF模型循环参考

C# EF模型循环参考,c#,asp.net,entity-framework,asp.net-mvc-4,model,C#,Asp.net,Entity Framework,Asp.net Mvc 4,Model,在EF&MVC项目中,我的模型中有以下对象 调查,其中有很多 步骤,其中有许多 问题,哪一个有一个 AnswerGroup,它有许多 答案 回答组是通用的,可以与许多问题建立关系 这一切都很好,但现在我需要一个问题和答案组合的能力,以有一个与之相关联的子问题,我不知道如何在模型中设置它 更新 我已经在Answer对象的配置中这样做了 HasMany(m => m.Questions).WithMany(x => x.Answers).Map(m =>

在EF&MVC项目中,我的模型中有以下对象

调查,其中有很多 步骤,其中有许多 问题,哪一个有一个 AnswerGroup,它有许多 答案 回答组是通用的,可以与许多问题建立关系

这一切都很好,但现在我需要一个问题和答案组合的能力,以有一个与之相关联的子问题,我不知道如何在模型中设置它

更新

我已经在Answer对象的配置中这样做了

        HasMany(m => m.Questions).WithMany(x => x.Answers).Map(m =>
        {
            m.MapLeftKey("QuestionId");
            m.MapRightKey("AnswerId");
            m.ToTable("AnswerQuestion");
        });

这将创建AnswerQuestion表,但这两个字段都是AnswerQuestion表Id列上的外键,根本没有帮助。

您是否尝试过添加ChildQuestionID来回答问题,并将其作为外键添加到问题?EF非常擅长处理循环逻辑,它甚至可以处理自引用FKs。这是DB优先还是代码优先?答案对象上的ChildQuestionId不起作用,因为答案可能属于许多问题。子问题需要与问题Id和答案Id组合相关联。嗯,不确定要如何使用它,您可以尝试使用多对多表,共三行,分别为QuestionID、AnswerID和ChildQustionID。前两个应该是FK到它们各自的表,这应该允许您通过导航属性访问它们,诀窍是,如果您访问nav属性off-Question,您将需要为每个给定的答案只筛选子问题,并且您可能必须在业务逻辑或存储库中这样做,这可能不太理想。Madullah,感谢您的关注,我已经更新了问题以提供更多信息。