C# 主体实体状态是其从属实体的集合时的实体设计
让我们将C# 主体实体状态是其从属实体的集合时的实体设计,c#,entity-framework,domain-driven-design,C#,Entity Framework,Domain Driven Design,让我们将术语定义为主要实体,将课程定义为一对多依赖关系 public class Term { public int Id { get; set; } public List<Course> Courses { get; set; } = new List<Course>(); } public class Course { public int Id { get; set; } public DateTime EndDate { get
术语
定义为主要实体,将课程
定义为一对多依赖关系
public class Term
{
public int Id { get; set; }
public List<Course> Courses { get; set; } = new List<Course>();
}
public class Course
{
public int Id { get; set; }
public DateTime EndDate { get; set; }
}
我想到的其他例子还有一个产品及其当前库存数量、只包含未确认评论的帖子等等
如果我们要捕获这些隐含的状态并使它们在我们的主要实体中直接访问,而不需要将我们的依赖实体从数据库中再水淹,我们可以认为什么是最好的实践?
我想到的一些解决方案:
Term.IsFinished
创建一个视图,每个主体实体连接并聚合两个表 在实体框架中直接使用视图,而不是基表
奖励积分: 在SQL Server中,您可以在视图上创建聚集索引,它将自动为您维护。甲骨文也有类似的概念 在其他RDBMS中,您需要创建一个单独的表,并使用触发器自己维护它
Terms.Where(t=>t.Courses.All(c=>c.EndTime > DateTime.Now))
Terms.Count(t=>t.Courses.All(c=>c.EndTime > DateTime.Now))