微风中的多对多关系

时间:2012-11-29 23:13:57

标签: entity-framework many-to-many breeze

  

我正在使用EF5 Code First定义我的一些模型。我有这些   三个具有多对多关系的示例类:

public class Team
    {
        [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int Team_Id { get; set; }
        [MaxLength(150)]
        public string TeamName { get; set; }

        public virtual ICollection<User> Users { get; set; }
        [public virtual ICollection<Role> Roles { get; set; }  // 1

        [Timestamp]
        public byte[] TimeStamp { get; set; }
    }

public class User
    {
        [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int User_Id { get; set; }
        [MaxLength(150)]
        public string LoginName { get; set; }
        [MaxLength(150)]
        public string Nachname { get; set; }
        [MaxLength(150)]        
        public string Vorname { get; set; }

        public virtual ICollection<Team> Teams { get; set; } 
        public virtual ICollection<Role> Roles { get; set; }   // 2

        [Timestamp]
        public byte[] TimeStamp { get; set; }
    }

public class Role
    {
        [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int Role_Id { get; set; }
        [MaxLength(50)]
        public string RoleName { get; set; }

        [Timestamp]
        public byte[] TimeStamp { get; set; }
    }
     

正如您所看到的,团队之间存在多对多的关系   用户。我想让它工作几个小时。我总是得到一个JS   VS 2012中出现错误消息“bad nav properties”的异常   首先我认为这是ICollections团队/用户   用户/团队 - 但它不是。问题似乎是两个电话   1)和2)。我删除其中任何一个它的工作原理。重命名一个和   保持两个字段都处于活动状态仍会引发错误。也许有人有   了解发生了什么。

     

非常感谢

SirSmackalot在我们的IdeaBlade论坛上发布了这个问题。我在这里重新提出问题和答案,因为我认为它对Breeze Stack Overflow社区有用。

1 个答案:

答案 0 :(得分:14)

Breeze尚不支持隐藏映射表的多对多关系。问题是Breeze依赖于“外键”概念来跟踪关系,而这对于在实体框架中没有有效负载定义的多对多关系是不可用的。

将多对多关系更改为与链接实体的两个1对多关系的工作是什么。基本上,只需将映射表公开为另一种实体类型。例如:

团队 - TeamUser(1对多)

用户 - TeamUser(1对多)

我们计划在稍后的版本中支持Entity Framework的官方多对多关系,但我们需要优先考虑这一点。因此,请使用网站上的反馈机制(https://breezejs.uservoice.com/forums/173093-breeze-feature-suggestions/filters/top)为此功能请求添加/投票。这有助于我们决定下一步关注哪些功能。