我正在使用MVC的Code First方法制作小时日历。这是自下而上的数据结构:
所有类都包含表元素ID DaySpec包含一天的开始和结束时间 WeekSpec在琐碎的布尔人中包含一系列DaySpecs ExceptionHoursSet定义了一般小时模式的例外小时数,它包含一个整数RepCount和一个对象HoursSet; RepCount指定异常重复的次数,并且HoursSet是DaySpec或WeekSpec Schedule包含一个字符串Name,一个WeekSpec,它每周指定一般模式,以及一个IEnumerable of ExceptionHoursSets。
右。
所以我的问题是,在Schedule和ExceptionHoursSet中使用WeekSpec类,我可以在数据库结构中的两者之间共享吗?我如何建立EF关系?
答案 0 :(得分:0)
当然可以!
如果您使用Entity Framework的Code First方法执行此操作,则只需将外键关系作为类型包含在类中:
public class DaySpec
{
public int DaySpecId { get; set; }
public DateTime Open { get; set; }
public DateTime Close { get; set; }
}
public class WeekSpec
{
public int WeekSpecId { get; set; }
public bool booleanOne { get; set; }
public DaySpec[] DaySpecs { get; set; }
}
public class ExceptionHoursSet
{
public int ExceptionHoursSetId { get; set; }
public int RepCount { get; set; }
public int WeekSpecId { get; set; } // set which WeekSpec you are referencing below (for lazy-loading)
public virtual WeekSpec HoursSet { get; set; }
// etc . . .
}
public class Schedule
{
public int ScheduleId { get; set; }
public string Name { get; set; }
public int WeekSpecId { get; set; } // set which WeekSpec you are referencing below (for lazy-loading)
public virtual WeekSpec WeekSpec { get; set; }
public IEnumerable<ExceptionHoursSet> ExceptionHoursSets { get; set; }
}
我可能已经留下了一些属性,但你明白了(必要时填写)。有不同的方法可以处理这种情况(延迟加载等等),它完全取决于你需要对数据做什么。