私はこのクラス構造を持っています:
パブリック クラス アクティビティ {
[Key] public long ActivityId { get; set; } public string ActivityName { get; set; } public virtual HashSet<ActivityLogMessage> ActivityLogMessages { get; set; } public virtual HashSet<FileImportLogMessage> FileImportLogMessages { get; set; } public virtual HashSet<RowImportLogMessage> RowImportLogMessages { get; set; } } public abstract class LogMessage { [Required] public string Message { get; set; } public DateTimeOffset CreateDate { get; set; } [Required] public long ActivityId { get; set; } public virtual Activity Activity { get; set; } } public class ActivityLogMessage : LogMessage { public long ActivityLogMessageId { get; set; } } public class FileImportLogMessage : ActivityLogMessage { public long? StageFileId { get; set; } } public class RowImportLogMessage : FileImportLogMessage { public long? StageFileRowId { get; set; } }
これは私にこれを与えます、モデル
各メッセージ (アクティビティ、ファイル、または行) は、アクティビティに関連付けられている必要があります。第 2 レベルと第 3 レベルのカーディナリティが ActivityLogMessage と同じでないのはなぜですか? 外部キー関係 (modelbuilder を介して流暢に) を記述しようとする試みも失敗しました。
これは、EF がリレーショナルにどのようにマッピングされているかを本当に理解するための、私にとって本当に学術的な演習であり、これは私を混乱させます。
よろしく、リチャード