我开始着手进行中的项目,它在数据库和代码的某些部分中也具有多对多关系,但是我意识到即使在模型中也存在多对多关系,始终只有一条线链接两个实体(与作者确认)。这就是我的意思:这两个实体分别是任务和任务列表,而任务仅属于任务列表。型号如下:
public class ProjectTask
{
public long Id { get; set; }
// other non related properties
}
public class ProjectTaskList
{
public long Id { get; set; }
public DateTime? DateEnd { get; set; }
// other non related properties
}
// link between task list and task
public class ProjectTaskListTask
{
public long ProjectTaskId { get; set; }
public ProjectTask ProjectTask { get; set; }
public long ProjectTaskListId { get; set; }
public ProjectTaskList ProjectTaskList { get; set; }
public int Order { get; set; }
}
及其在上下文类的OnModelCreating
方法中的配置:
modelBuilder.Entity<ProjectTaskListTask>()
.HasKey(a => new { a.ProjectTaskId, a.ProjectTaskListId });
modelBuilder.Entity<ProjectTaskListTask>()
.HasOne(u => u.ProjectTaskList)
.WithMany(u => u.Tasks)
.IsRequired()
.OnDelete(DeleteBehavior.Restrict);
我的问题是:在代码的某些部分中,我需要了解任务的任务列表,我需要在Where
查询中使用它来进行一些验证,例如:Tasks.Where(p => p.TaskList.DateEnd == null)
。 / p>
如何为ProjectTask
实体添加一个Not Mapped属性,以便可以做到这一点?我正在使用Entity Framework Core 2。
感谢您的帮助
答案 0 :(得分:1)
在不更改基础数据结构的情况下,您可以查询ProjectTaskListTask吗?沿线的东西...?
ProjectTaskListTask
.Include(p => p.ProjectTaskList)
.Include(p => p.ProjectTask)
.Where(p => p.ProjectTaskList.DateEnd == null)
.Select(p => p.ProjectTask);