Ehs*_*udi 3 c# entity-framework poco
我有这些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; }
}
Run Code Online (Sandbox Code Playgroud)
我试图通过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();
}
Run Code Online (Sandbox Code Playgroud)
这里的"路径" Include是全包的,这意味着您可以指定用.(点)分隔的多个属性,EF将包括"属性路径"的所有部分.
在你的情况下,这应该工作:
public Task GetTaskById(int taskId)
{
return context.Tasks
.Include("TaskAssigns.User")
.Include("TaskComments.User")
.Include("User").Where(t => t.TaskId == taskId).FirstOrDefault();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4156 次 |
| 最近记录: |