我有一个名为"周"有一个" Day"一天有一个Enum" DayOfWeek"其中包括"星期一","星期二","星期四","星期五"和"星期天"
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; }
}
{{1}}
每个&#34;周&#34;应该只能有一种类型的&#34; Day&#34;,one&#34; Monday&#34;,one&#34; Tuesday&#34;,one&#34; Wednesday&#34 ;等
如何通过数据注释/关系来实现这一点
谢谢,来自Dylan
答案 0 :(得分:0)
我认为你可以通过两种方式实现这一目标:
实施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; }
}
您也可以通过the fluent interface进行类似的配置,而不是使用属性。