【发布时间】:2015-12-07 12:15:01
【问题描述】:
有两个实体:
- 组
- Yuvak - 人物
“其他”人被设计在没有组的后端。 (空)
一个 Yuvak - 人总是有一个家庭组。 (1=>1) 并且没有可控制的组。
A Nirikshak(Head) - 人总是有一个家庭组。 (1=>1) 但他也将控制多个组 - GroupsOfNirikshak。 (1=>很多)
一个组会有多个 Yuvaks (1=>Many)
并且所有组大多都只有一个负责人。 (最初,一个新组可能没有任何负责人,但有零个或多个 yuvaks-persons。)
[Table("Group")]
public class Group
{
[Key]
public int Id { get; set; }
.....
public virtual List<Yuvak> Yuvaks { get; set; }
[ForeignKey("Nirikshak")]
public int? NirikshakId { get; set; }
public virtual Yuvak Nirikshak { get; set; }
}
[Table("Yuvak")]
public class Yuvak
{
[Key]
public int Id { get; set; }
.....
[ForeignKey("HomeGroup")]
public int? HomeGroupId { get; set; }
public virtual Group HomeGroup { get; set; }
public virtual List<Group> GroupsOfNirikshak { get; set; }
}
我已经为两个实体中的 1=>1 关系(可为空)提供了两个外键。 现在要管理多对多关系,如果它们不为空,它应该自动创建带有“Yuvak_Id”和“Group_Id”列的第三个表。但是在这里,FK 是空的;它不是创建第三个表,而是在两个表中添加一个外键列。(Group:"Yuvak_Id" and Yuvak:"Group_Id")
我应该怎么做才能维护 Yuvak-HomeGroup 它应该只使用上面提供的外键,并且对于多对多关系(Head-GroupsOfNirikshak & Group-Yuvaks)它应该创建一个单独的表。
我可以为多对多关系创建一个单独的表,例如:(ID,YuvakID,GroupID) 我该怎么做?
我尝试这样做,但得到了不同的错误,如下所示:
- 在类型上声明的导航属性“HomeGroup” 'YTKGoshthiManagment.Models.Yuvak' 已配置为 外键冲突。
- 多重性在角色“Yuvak_HomeGroup_Target”中无效 关系“Yuvak_HomeGroup”。因为依赖角色 属性不是关键属性,的上限 依赖角色的多重性必须是“*”。
.....
等等。
【问题讨论】:
标签: c# entity-framework orm entity-framework-6 entity