0

我正在使用 MVC 的 Code First 方法制作小时日历。这是自下而上的数据结构:

所有类都包含表元素 ID。
DaySpec 包含一天的开始和结束时间。
WeekSpec 包含一个 DaySpecs 数组,其中包含一些普通的布尔值。
一个 ExceptionHoursSet 定义了一般小时模式的例外时间,它包含一个整数 RepCount 和一个对象 HoursSet;RepCount 指定异常重复的次数,HoursSet 是 DaySpec 或 WeekSpec。
Schedule 包含一个字符串 Name、一个 WeekSpec 指定每周的一般模式,以及一个 ExceptionHoursSets 的 IEnumerable。

正确的。

所以我的问题是,在 Schedule 和 ExceptionHoursSet 中都使用 WeekSpec 类,我可以在数据库结构中的两者之间共享它吗?我将如何设置 EF 关系?

4

1 回答 1

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; } 
}

我可能遗漏了一些属性,但你明白了(在必要时填写)。有不同的方法可以处理这种情况(延迟加载等),这完全取决于您需要对数据做什么。

于 2012-07-23T17:06:55.407 回答