如何建立一到七的关系,每个实体框架中只有七种类型中的一种

本文关键字:一种 框架 七种 类型 实体 建立 何建立 关系 | 更新日期: 2023-09-27 18:12:11

我有一个名为"Week"的模型,它有一个"Day"列表,而一个Day有一个Enum "DayOfWeek",它有"Monday", "Tuesday", "Thursday", "Friday"answers"Sunday"

"星期"模型
public class Week
{
    public string Id { get; set; } = Guid.NewGuid().ToString();
    //This needs to be only able to have one "Monday" one "Tuesday" etc 
    public virtual List<Day.Day> DaysOfTheWeek { get; set; }
}

"天"模型
public class Day
{
    public string Id { get; set; } = Guid.NewGuid().ToString();
    public Week.Week Week { get; set; }
    //This is my key (for "week") each week should only have one "Monday", one "Tuesday", etc
    public DayOfWeek DayOfWeek { get; set; }
    public virtual List<Class.Class> Classes { get; set; }
}

每个"周"只能有一个"日",一个"星期一",一个"星期二",一个"星期三"等类型
如何通过数据注释/关系实现这一点
谢谢,来自Dylan

如何建立一到七的关系,每个实体框架中只有七种类型中的一种

我认为你可以通过两种方式做到这一点:

  1. 只使用验证

实现IValidatableObject并检查其中天数的唯一性

  • Day上使用复合主键,其中包括Week ID和DayOfWeek
  • 这将把约束放在物理模型上,并在概念上使Day成为Week的"子实体"。

    你可以这样做(你可能需要调整,我没有时间尝试):

    public class Day
    {
      public Week.Week Week { get; set; }
      [Key] 
      [Column(Order = 2)] 
      public DayOfWeek DayOfWeek { get; set; }
      public virtual List<Class.Class> Classes { get; set; }
      [Key] 
      [Column(Order=1)] 
      // Helper for PK; EF will recognize this as the FK by convention
      public string WeekId { get; set; }
    }
    

    您也可以通过fluent接口进行类似的配置,而不是使用属性。

    相关文章: