【发布时间】:2013-04-07 17:13:53
【问题描述】:
我有 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; }
}
【问题讨论】:
-
还有一些东西 - 你如何插入/调用 - 用法。
-
@NSGaga,我添加了代码。感谢观看
-
^^(如何插入,类型等)
-
您知道
.OfType<ProcessTask>()删除了所有不属于ProcessTask类型的项目吗?你似乎不想那样,但你明确要求这样做。 -
是的,我只想要 ProcessTasks。问题是 ID(来自 Duty)为 0(零),尽管从数据库返回了正确的 ID。
标签: entity-framework ef-code-first entity-framework-5