我在微风中遇到多对一关系的问题。
情况如下(为清晰起见,替换了实体类型):
有一个包含子实体列表的父实体,每个子实体都有另一个子实体列表。
父母 - 孩子 - 孙子
父母实体可以是教室(虚拟情境),孩子可以是学生。让我们说每个学生都有一个附属于他们的另一个实体的清单,例如每个孩子可以有一个以上的国籍,国籍是孙子对象。
所以在子实体中有一个如下所示的导航属性: 国籍:{entityTypeName:"国家:#Some.Namespace",isScalar:false,associationName:" Pupil_Countries" }
在国家/地区,您不希望链接回到Pupil,因为没有理由从国家/地区导航到学生。
当尝试将国家/地区添加到民族阵列时,没有任何反应,因为" checkForDups"方法什么都不返回(我没有双向绑定,也没有设置外键属性)。
我怎样才能让它发挥作用?
非常感谢!
编辑:
事情不起作用:
(注意样品是假的,仅供样品使用)
答案 0 :(得分:1)
你试图以错误的方式做多对多的关系。
你们有很多学生,每个学生都有很多国籍(国家)。您有许多国籍(国家)与许多学生有关。就这么简单。
你需要做的是建立一个Junction对象:
public class PupilNationalityJunction{
public int Id{get;set;}
public int PupilId{get;set;}
public int NationalityId{get;set;}
[ForeignKey("PupilId")]
public Pupil Pupil{get;set;}
[ForeignKey("NationalityId")]
public Country Nationality{get;set;}
}
然后您可以查询:classroom.pupils.pupilNationalityJunctions.Nationality
虽然拥有超过1个国籍可能没有意义,但这仅仅是例如。