Entity Framework核心多表关系



我试图创建关系,父母有很多孩子,也包括最大的孩子。如何正确配置该关系以及如何将数据插入表中?

public class Parent 
{
public int Id { get; set; }
public int Name { get; set; }
public int ChildId { get; set; }

public virtual Child Child { get; set; }
public virtual ICollection<Child> Childs { get; set; }
}
public class Child 
{
public int Id { get; set; }
public int Age { get; set; }
public int ParentId { get; set; }

public virtual Parent Parent { get; set; }
}

我建议不要尝试将其作为单独的属性存储。相反,使用get-only属性从现有数据中计算它,例如:

public Child OldestChild => Childs.OrderByDescending(c => c.Age).FirstOrDefault();

如果您关心重复访问的成本,您可以使用Lazy<>类或其他一些缓存方法。如果您这样做,请注意,对children集合的更改将不会反映在缓存的OldestChild结果中。

后续:以上仍然不完整,因为它没有解决同龄儿童的情况-出生日期相近,双胞胎,被收养等。这也提出了一个问题:为什么你要建模年龄(随着时间的推移而变化)和出生日期(固定)。

最新更新