1

次のエンティティ関係があります。Project Id を渡してリソースをフィルタリングしたい。

プロジェクトクラス

public class Project : EntityBase
{
    public Project()
    {
        this.Tasks = new HashSet<Task>();
    }
    [Key]
    public Guid GUID { get; set; }
    public virtual ICollection<Task> Tasks { get; set; }
}

タスク クラス

public class Task : IIdentifier
{
    public Task()
    {
        this.Assignments = new HashSet<Assignment>();
    }

    [Key]
    public Guid GUID { get; set; }

    [ForeignKey("Projects")]
    public Guid? ProjectId { get; set; }
    public virtual Project Projects { get; set; }

    public virtual ICollection<Assignment> Assignments { get; set; }
}

リソース クラス

public class Resource : IIdentifier
{
    public Resource()
    {
        this.Assignments = new HashSet<Assignment>();
    }

     [Key]
    public Guid GUID { get; set; }
    public virtual ICollection<Assignment> Assignments { get; set; }
}

課題クラス

 public class Assignment : IIdentifier
{
    [Key]
    public Guid GUID { get; set; }

    [ForeignKey("Tasks")]
    public Guid TaskId { get; set; }
    public virtual Task Tasks { get; set; }

    [ForeignKey("Resources")]
    public Guid ResourceId { get; set; }
    public virtual Resource Resources { get; set; }
}

プロジェクト GUID を渡すときにすべてのリソースを取得したい

public IEnumerable<Resource> GetResourcesForViewsByProjectId(Guid ProjectId)
    {

        var x = from t in Uow.Tasks.GetAll().Where(con => con.ProjectId == ProjectId)
                from a in Uow.Assignments.GetAll().Where(c => c.TaskId == t.GUID)
                from r in Uow.Resources.GetAll()
                          .Where(r => r.Assignments.Where(con => con.ResourceId == r.GUID))
                          .DefaultIfEmpty()
               select r;

        return x;
    }

しかし、これは機能していません。助言がありますか?

4

1 に答える 1