この関係を設定しようとしていますが、コードファーストを使用できません。EF6コード1対1ゼロ
EVENT
Id
...
ScheduleId
SCHEDULE
Id
...
Type
EventId
イベントは、常にその日付、場所を確認するスケジュールを持つことになります...しかし、スケジュールは、イベントを持っているかの種類のOSのスケジュールに依存することはできません。スケジュールは異なるタイプでもよく、そのうちの1つはイベントです。タイプがイベントの場合、EventIdフィールドはイベントを指します。
したがって、テーブルの1つがプリンシパルであり、関係のテーブルIDを使用する通常の一対一の関係を作成したくありません。 SQL Serverで
結果がなければならない:だから
EVENT
FK Event.ScheduleId -> Schedule.Id -> OnDelete NO Action
SCHEDULE
FK Schedule.EventId -> Event.Id -> OnDelete Cascade
イベントを削除すると、対応するスケジュールが削除されますが、それが「接続」されている場合は、スケジュールを削除することはできませんEventでは、EventId = nullの場合にのみ、これらのスケジュールを削除できます。
私が試してみました:
On EVENT
HasRequired(p => p.Schedule).WithOptional(a => a.Event).WillCascadeOnDelete(false)
On SCHEDULE
HasOptional(p => p.Event).WithRequired(m => m.Schedule).WillCascadeOnDelete(true);
をしかし、それは常にforeingキーとしてEVENT PK IDを取り、それは私が欲しいものではありません。
EFコードを使用して最初にこの設定を行うにはどうすればよいですか?
ありがとうございます。