连接表:在Entity Framework模型中将多对多更改为一对多

时间:2011-05-11 11:33:07

标签: sql entity-framework

我有一组表格如下:

  

PositionShiftPattern
  PositionShiftPatternID
  PositionID

     

EmployeePositionShiftPattern
  EmployeePositionShiftPatternID
  EmployeePositionID

     

TemplateShiftPattern
  TemplateShiftPatternID

     


  WeekID

     

PositionShiftPatternJunction
  PositionShiftPatternID
  WeekID

     

EmployeePositionShiftPatternJunction
  EmployeePositionShiftPatternID
  WeekID

     

TemplateShiftPatternJunction
  TemplateShiftPatternID
  WeekID

因此,PositionShiftPattern,EmployeePositionShiftPattern和TemplateShiftPattern每个都有一个与Week的结点,中间有一对多的关系。

显然,EF会将PositionShiftPattern,EmployeePositionShiftPattern和TemplateShiftPattern与Week之间的关系映射为多对多关系,并将每个表的导航属性直接创建为Week。

是否有可能将多对多关系更改为一对多关系(例如,每周应映射到单个ShiftPattern)?我正试图实现互斥(见下图),并希望避免只将PositionShiftPatternID,EmployeePositionShiftPatternID和TemplateShiftPatternID添加到Week。我应该考虑另一种实现互斥的方式吗?

Mutual Exclusion

由于

1 个答案:

答案 0 :(得分:0)

不,不可能。该关系必须与数据库中的关系相同。如果您创建一对多关系,它将被视为一个新关系,您将不得不将这些ID添加到周。另外,在查看模型时,引入这种关系也没有意义。目前Shift可以与很多周有关,而周可以有很多班次。如果你引入一对多,那就意味着每周实例只能有一个班次。