3

私はこれらのPOCOクラスを持っています:

public class  Task
    {
        public int TaskId { get; set; }
        public int ProjectId { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
        public DateTime StartDate { get; set; }
        public DateTime? DueDate { get; set; }
        public int UserId { get; set; }
        public string Tags { get; set; }
        public string FileName { get; set; }
        public virtual Project Project { get; set; }
        public virtual List<TaskAssigned> TaskAssigns { get; set; }
        public virtual List<TaskComment> TaskComments { get; set; }
        public virtual User User { get; set; }
    }

 public class User
    {
        public int UserId { get; set; }
        public string Name { get; set; }
        public int AccountId { get; set; }
        public string Email { get; set; }
        public string Password { get; set; }
        public bool IsAdmin { get; set; }
        public virtual Account Account { get; set; }
    }

public class TaskComment
    {
        public int TaskCommentId { get; set; }
        public int TaskId { get; set; }
        public int UserId { get; set; }
        public string Comment { get; set; }
        public string FileName { get; set; }
        public virtual User User { get; set; }
    }

    public class TaskAssigned
    {
        public int TaskAssignedId { get; set; }
        public int TaskId { get; set; }
        public int UserId { get; set; }
        public virtual User User { get; set; }
    }

IDでタスクを取得し、このタスクに関連するすべてのエンティティを読み込もうとしましたが、TaskCommentおよびTaskAssignedのユーザーエンティティは、タスクエンティティのユーザー以外のユーザーではnullです。

public Task GetTaskById(int taskId)
    {
        return context.Tasks.Include("TaskAssigns").Include("TaskComments").Include("User").Where(t => t.TaskId == taskId).FirstOrDefault();
    }
4

2 に答える 2

9

の「パス」Includeはすべてを含みます。これは、(ドット)で区切られた複数のプロパティを指定できることを意味し.、EFには「プロパティパス」のすべての部分が含まれます。

あなたの場合、これはうまくいくはずです:

public Task GetTaskById(int taskId)
{
    return context.Tasks
               .Include("TaskAssigns.User")
               .Include("TaskComments.User")
               .Include("User").Where(t => t.TaskId == taskId).FirstOrDefault();
}
于 2012-08-17T10:59:02.927 に答える
0

次のようにコンテキストプロパティを変更します

context.DataContext.ContextOptions.ProxyCreationEnabled = true; 
context.DataContext.ContextOptions.LazyLoadingEnabled = true;
于 2012-08-17T10:59:52.340 に答える