我有 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 Profiler 检查过)。
为什么它不映射第一个抽象类的字段?任何帮助深表感谢。
我的源代码:
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; }
}