私は3つのテーブルを持っています:
Duty
Task :Duty
ProcessTask : Task
私は TPT 階層を使用していますが、データベースを作成するときはすべて問題ないようです。しかし、データベースから値を読み取ると、Duty テーブルから値が取得されません。これは私のクエリです:
var tasks = _dbContext.Duties.OfType<Task>()
.OfType<ProcessTask>()
.Where(c => c.ParentID == id);
Task と ProcessTask からの値のみが返されますが、SQL クエリはすべて正しい値を返しました (SQL プロファイラーで確認しました)。
最初の抽象クラスのフィールドをマップしないのはなぜですか? どんな助けでも大歓迎です。
私のソースコード:
public class Duty
{
public int ID { get; set; }
}
[Table("Task")]
public class Task : Duty
{
public int ID { get; set; }
public int? Duration { get; set; }
public int? NoOfRepeats { get; set; }
}
[Table("ProcessTask")]
public class ProcessTask : DigiBob.Model.Governance.Duties.Task
{
public int ProcessTaskTypeID { get; set; }
public virtual ProcessTaskType ProcessTaskType { get; set; } //ProcessTasks
public int? ParentID { get; set; }
[ForeignKey("ParentID")]
public virtual ProcessTask Parent { get; set; } //Children
[Required(ErrorMessage = "A short description is required")]
[MaxLength(150, ErrorMessage = "The maximum length for the short description is 150")]
public string ShortDescription { get; set; }
}
public class MyContext : DbContext
{
public DbSet<Duty> Duties { get; set; }
}