是否可以在不更改对现有导航属性的所有引用的情况下促进与实体的多对多关系?

科林

我在问题与答案之间存在多对多关系。但是现在我想为有效的问答对增加成本。我试图考虑一种避免更改所有对原始属性的引用的方法。是否可以?

   public class Question
    {
       public int ID { get; set:}
       public string Text { get; set; }

       //The original many-to-many
       //public virtual ICollection<Answer> Answers  { get; set; }

       //but now I need a QuestionAnswerPair as an entity
       //problem is that Adding or Removing does not affect the QuestionAnswerPairs collection
       [NotMapped]
       public ICollection<Answer> Answers
       {
            get
            {
                return QuestionAnswerPairs.Select(x => x.Answer).ToList();
            }
       }

        public virtual ICollection<QuestionAnswerPair> QuestionAnswerPairs { get; set; }
    }

    public class Answer
    {
        public int ID {get; set;}            
        public string Text { get; set; }

        //The original many-to-many
        //public virtual ICollection<Question> Questions { get; set; }

    }

    //UnitCosts should only be added to valid Question-Answer pairs
    //so I want to have a cost linked to the many-to-many relationship
    public class QuestionAnswerPair
    {
        public int ID {get; set;}

        public int AnswerID { get; set; }

        public virtual Answer Answer { get; set; }

        public int QuestionID { get; set; }

        public virtual Question Question { get; set; }

        public decimal? Amount { get; set; }
    }
格特·阿诺德

您很快就会发现,当您想在LINQ-to-entities查询中使用Navigation属性时,这是不可能的。

如果你愿意做

context.Questions.SelectMany(q => q.Answers)

EF将引发Answers不支持的异常支持初始化器,实体成员和实体导航属性)。

如果要解决此问题,请添加AsEnumerable

context.Questions.AsEnumerable().SelectMany(q => q.Answers)

您会发现,对于每个问题,都会执行查询以加载其QuestionAnswerPairs集合和Answer(如果启用了延迟加载)。而且,如果您想避免这种情况,则必须获取带有Incude语句的问题

您确实无法做得更好,但是QuestionAnswerPairs在LINQ查询中包括了

这就是为什么使用透明联结表(即没有联结类)来实现多对多关联始终是一个重大决定的原因。用户迟早会希望将描述性数据添加到联结记录中。纯联结表在实际应用中非常罕见。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我可以在不更改对现有导航属性的所有引用的情况下促进与实体的多对多关系吗?

来自分类Dev

如何在没有新实体的情况下配置多对多关系?

来自分类Dev

如何在没有克隆的情况下更改对拥有值的引用?

来自分类Dev

如何确定多对多关系中所有现有列表的条目是否在列表中

来自分类Dev

如何在满足计数条件的情况下查询具有多对多关系的表

来自分类Dev

如何在不重复的情况下向现有实体添加具有关系的新实体?(EF 6.1)

来自分类Dev

将一对多关系转换为多对多关系并更新现有引用

来自分类Dev

是否可以在不创建临时文件的情况下修改现有SAS数据集?

来自分类Dev

是否可以在没有root用户访问权限的情况下更改文件的所有权?

来自分类Dev

是否可以在没有root用户访问权限的情况下更改文件的所有权?

来自分类Dev

如何在不更改对象的情况下更改其属性?

来自分类Dev

是否可以在不知道属性名称的情况下选择SQL中的所有XML属性?

来自分类Dev

Laravel / Eloquent:是否可以在不设置父级的情况下选择所有子模型数据?

来自分类Dev

如何在不删除具有多对多关系的ember中的记录的情况下删除关联?

来自分类Dev

在不更改现有项目目录结构的情况下使用Eclipse进行C / C ++开发

来自分类Dev

在不更改清单中的launchMode的情况下,清除现有任务的最佳方法是什么?

来自分类Dev

如何在不更改现有json数组值的情况下克隆json数组

来自分类Dev

在不更改旧值的情况下更新pyspark中的现有列

来自分类Dev

在不更改现有代码的情况下添加后期Sharp Aspect

来自分类Dev

如何在不破坏现有设置的情况下更改akka-scala响应模型

来自分类Dev

django rest框架-在不更改现有代码的情况下扩展auth.user

来自分类Dev

在不丢失现有产品的情况下添加 WooCommerce 产品属性

来自分类Dev

是否可以在不更改访问语法的情况下用lambda替换属性?

来自分类Dev

可以在没有显式引用的情况下引用结构的闭包属性吗?

来自分类Dev

在不指定依赖关系树中所有类的情况下,使用ReflectiveInjector注入服务

来自分类Dev

在Vue JS watcher中如何在没有无限循环的情况下更改对象的属性?

来自分类Dev

是否可以在不保存的情况下批量分配现有记录?

来自分类Dev

是否可以在没有服务器的情况下使用实体类和EntityManager?

来自分类Dev

将现有实体添加到多对多关系的子级集合中

Related 相关文章

  1. 1

    我可以在不更改对现有导航属性的所有引用的情况下促进与实体的多对多关系吗?

  2. 2

    如何在没有新实体的情况下配置多对多关系?

  3. 3

    如何在没有克隆的情况下更改对拥有值的引用?

  4. 4

    如何确定多对多关系中所有现有列表的条目是否在列表中

  5. 5

    如何在满足计数条件的情况下查询具有多对多关系的表

  6. 6

    如何在不重复的情况下向现有实体添加具有关系的新实体?(EF 6.1)

  7. 7

    将一对多关系转换为多对多关系并更新现有引用

  8. 8

    是否可以在不创建临时文件的情况下修改现有SAS数据集?

  9. 9

    是否可以在没有root用户访问权限的情况下更改文件的所有权?

  10. 10

    是否可以在没有root用户访问权限的情况下更改文件的所有权?

  11. 11

    如何在不更改对象的情况下更改其属性?

  12. 12

    是否可以在不知道属性名称的情况下选择SQL中的所有XML属性?

  13. 13

    Laravel / Eloquent:是否可以在不设置父级的情况下选择所有子模型数据?

  14. 14

    如何在不删除具有多对多关系的ember中的记录的情况下删除关联?

  15. 15

    在不更改现有项目目录结构的情况下使用Eclipse进行C / C ++开发

  16. 16

    在不更改清单中的launchMode的情况下,清除现有任务的最佳方法是什么?

  17. 17

    如何在不更改现有json数组值的情况下克隆json数组

  18. 18

    在不更改旧值的情况下更新pyspark中的现有列

  19. 19

    在不更改现有代码的情况下添加后期Sharp Aspect

  20. 20

    如何在不破坏现有设置的情况下更改akka-scala响应模型

  21. 21

    django rest框架-在不更改现有代码的情况下扩展auth.user

  22. 22

    在不丢失现有产品的情况下添加 WooCommerce 产品属性

  23. 23

    是否可以在不更改访问语法的情况下用lambda替换属性?

  24. 24

    可以在没有显式引用的情况下引用结构的闭包属性吗?

  25. 25

    在不指定依赖关系树中所有类的情况下,使用ReflectiveInjector注入服务

  26. 26

    在Vue JS watcher中如何在没有无限循环的情况下更改对象的属性?

  27. 27

    是否可以在不保存的情况下批量分配现有记录?

  28. 28

    是否可以在没有服务器的情况下使用实体类和EntityManager?

  29. 29

    将现有实体添加到多对多关系的子级集合中

热门标签

归档