我有一个名为“ Week”的模型,该模型有一个“ Day”列表,一天中有一个枚举“ DayOfWeek”,其中包含“ Monday”,“ Tuesday”,“ Thursday”,“ Friday”和“ 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界面进行类似的配置,而不使用属性。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句