0

我正在创建一个类似于任务列表的系统 Web 应用程序。

  • 用户可以创建任务
  • 用户可以在任何任务中创建任务。
  • 然后用户可以在该任务中创建一个任务
  • 用户可以查看第一个任务并查看与其链接的所有任务。

我创建了一个简单的父子关系。一旦我通过了第一级,我发现这是不可能的?

我希望能够查看原始父任务以及其中的所有其他父任务和子任务。

到目前为止,一个任务有一个任务集合。

我想要做的是查看原始父类的所有兄弟姐妹。

   modelBuilder.Entity<Task>()
            .HasMany(x => x.Children)
            .WithOptional()
            .HasForeignKey(x => x.ParentID);
4

2 回答 2

1

查询数据库时,请执行以下操作:

var tasks = from t in db.Tasks.Include("Parent")
            where t.Id //... your logic here
            select t;

并且您将需要扩展您的 Task 类以包含父属性:

public virtual Task Parent { get; set; }

然后映射关系:

modelBuilder.Entity<Task>()
            .HasOptional(x => x.Parent)
            .WithMany(x => x.Children)
            .HasForeignKey(x => x.ParentID);

上面的查询告诉 EF 为每个返回的任务带来父任务。

希望这可以帮助。

于 2013-04-19T19:08:20.697 回答
0

一种解决方案可能是必须使用外键。一个外键是 IDRootTask,另一个外键是 IDParentTask。

第一个 IDRootTask 是第一个任务的 ID,所以要获取该组的所有任务。第二个 FK,IDRootParent 可用于仅获取父任务的任务。这样,就不需要递归函数来获取父母的父母和父母的父母。

其他选项如果您希望所有任务都是确定的任务,那么您需要在数据库中存储一棵树,以便您了解所有后代或所有祖先。

于 2013-04-21T11:25:28.587 回答