0

私はMVCのCodeFirstアプローチを使用して時間カレンダーを作成しています。これは、ボトムアップからのデータ構造です。

すべてのクラスにはテーブル要素IDが含まれています。
DaySpecには、1日の開始時間と終了時間が含まれています。
WeekSpecには、些細なブール値の中に、DaySpecの配列が含まれています。
一般的な時間パターンの例外である時間を定義するExceptionHoursSetには、整数のRepCountとオブジェクトのHoursSetが含まれます。RepCountは、例外が繰り返される回数を指定し、HoursSetはDaySpecまたはWeekSpecのいずれかです。
スケジュールには、文字列Name、週単位で一般的なパターンを指定するWeekSpec、およびExceptionHoursSetsのIEnumerableが含まれます。

右。

だから私の質問は、ScheduleとExceptionHoursSetの両方でWeekSpecクラスを使用して、データベース構造の2つで共有できますか?EF関係をどのように設定しますか?

4

1 に答える 1

0

確かに彼らはできる!

EntityFrameworkのCodeFirstアプローチを使用してこれを行う場合は、外部キーの関係をクラス内の型として含めるだけです。

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 に答える