我正在寻找使用Entity Framework 6构建“微软项目”式数据层次结构。基本上我需要的是可以跟踪不同级别的数据结构任务的细节。所以我期望构建一个支持类似以下内容的结构,其中任务可以具有子任务,子任务可以具有子任务等等,但是它不总是也不总是具有相同的深度。使用EF6构建“微软项目”式数据层次结构
Task
-Task
--Task
--Task
--Task
---Task
---Task
--Task
一些在这里的其他帖子提到,树的层次结构与实体框架非常困难,但我一直没能找到任何信息表明它是否自EF4改善,现在是那么困难。
我有一个但是任务模型如下一样,当我尝试生成它没有产生预期的数据库:我期待一个数据库,在那里我有一个任务表,以及儿童
public class Task
{
public int ID { get; set; }
public string Name { get; set; }
public virtual Task Parent { get; set; }
public virtual ICollection<Task> Children { get; set; }
public virtual ICollection<Task> Predecessors { get; set; }
public virtual ICollection<Task> Successors { get; set; }
}
,前辈和接班人表但是我结束了仅仅是一个任务表属性如下:
ID = c.Int(nullable: false, identity: true),
Name = c.String(),
Task_ID = c.Int(),
Parent_ID = c.Int(),
Task_ID1 = c.Int(),
Task_ID2 = c.Int(),
此外,我希望能够将多个不同的数据块与这些任务相关联。假设我的任务是“构建表”,并且我正在跟踪PersonA与PersonB构建它需要多长时间。将数据与该任务关联的最佳方式是什么?我应该使用TaskData对象类似如下:
public class TaskData
{
public int ID { get; set; }
public int CompletionTime { get; set; }
public virtual Task Task { get; set; }
public virtual Person Person { get; set; }
}
要的东西我也需要做出多个不同的任务相同的任务目标可重复使用的进一步复杂化。例如“Build Playground A”可能有子任务“Build a Table”的大小为1,而“Build Playground B”可能有子任务“Build a Table”的大小为2,但我只想让“Build a Table”任务在DB中存在一次然后通过TaskData对象关联数据。
提示或帮助确定如何解决上述任何问题将不胜感激。
我同意应该只有一个任务表,我只是在想别人会跟踪任务如何相互关联。我唯一需要解释的就是如何跟踪id并获得EF来生成导航表。 – bbodenmiller
@bbodenmiller原谅我,我不完全确定你的意思。当你说跟踪ID的时候,你指的是你提供的类中提到的“孩子”,“前辈”和“后继者”属性? –
@bbodenmiller为了今晚帮助你的目的,我假设你的意思是我上面所说的。了解如何在步骤3中定义双向关联。 –