我正在使用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社区有用。
答案 0 :(得分:14)
Breeze尚不支持隐藏映射表的多对多关系。问题是Breeze依赖于“外键”概念来跟踪关系,而这对于在实体框架中没有有效负载定义的多对多关系是不可用的。
将多对多关系更改为与链接实体的两个1对多关系的工作是什么。基本上,只需将映射表公开为另一种实体类型。例如:
团队 - TeamUser(1对多)
用户 - TeamUser(1对多)
我们计划在稍后的版本中支持Entity Framework的官方多对多关系,但我们需要优先考虑这一点。因此,请使用网站上的反馈机制(https://breezejs.uservoice.com/forums/173093-breeze-feature-suggestions/filters/top)为此功能请求添加/投票。这有助于我们决定下一步关注哪些功能。