我试图创建关系,父母有很多孩子,也包括最大的孩子。如何正确配置该关系以及如何将数据插入表中?
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结果中。
后续:以上仍然不完整,因为它没有解决同龄儿童的情况-出生日期相近,双胞胎,被收养等。这也提出了一个问题:为什么你要建模年龄(随着时间的推移而变化)和出生日期(固定)。