[英]Load child entities in Entity Framework
我有這些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的User實體對於除Task中的User實體之外的其他用戶為null:
public Task GetTaskById(int taskId)
{
return context.Tasks.Include("TaskAssigns").Include("TaskComments").Include("User").Where(t => t.TaskId == taskId).FirstOrDefault();
}
Include
的“路徑” Include
全包,這意味着您可以指定用a分隔的多個屬性.
(點)和EF將包括“屬性路徑”的所有部分。
在你的情況下,這應該工作:
public Task GetTaskById(int taskId)
{
return context.Tasks
.Include("TaskAssigns.User")
.Include("TaskComments.User")
.Include("User").Where(t => t.TaskId == taskId).FirstOrDefault();
}
更改上下文屬性如下
context.DataContext.ContextOptions.ProxyCreationEnabled = true;
context.DataContext.ContextOptions.LazyLoadingEnabled = true;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.