如何建立一到七的关系,每个实体框架中只有七种类型中的一种
本文关键字:一种 框架 七种 类型 实体 建立 何建立 关系 | 更新日期: 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
我认为你可以通过两种方式做到这一点:
- 只使用验证
实现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接口进行类似的配置,而不是使用属性。