代码之家  ›  专栏  ›  技术社区  ›  Phil Wright

实体框架能否将两个关联映射为一个导航?

  •  1
  • Phil Wright  · 技术社区  · 14 年前

    我这里有两张简单的桌子……

    Table = Person
       PersonID  (int, PrimaryKey)
       FirstName (char)
       LastName  (char)
    
    Table = Related
       RelatedID    (int, PrimaryKey)
       Person1      (int, ForeignKey for Person.PersonID)
       Person2      (int, ForeignKey for Person.PersonID)
       Relationship (int)
    

    为Person生成的实体有两个导航集合。一个用于相关人员1,另一个用于相关人员2。这是一种痛苦,因为这意味着我有两个集合要调查,以查找与此人相关的所有关系。

    我只需要一个包含这两个集合的导航集合。是否可以将此生成为实体框架标记的一部分?唯一的选择是自己生成第三个集合,该集合包含实体的集合集,并且感觉不需要这样做。

    1 回复  |  直到 14 年前
        1
  •  2
  •   Alex James    14 年前

    正如克雷格所说,你所要求的不是英孚的核心,而是……一段友谊型的关系是一种令人讨厌的关系,所以我知道你在做什么。

    通过将关联集映射到ssdl中的视图(definingquery),有一个解决方案可以实现这一点。

    视图支持的关联/关系将是只读的,因此您可能希望保留其他两个关系,以便允许您从正确的集合中添加/删除,或者只在一个方向上搜索。

    看看这篇文章 which shows the techniques 更多信息。

    希望这有帮助

    亚历克斯