[英]Fluent NHibernate: Map property without foreign key?
我有这两个类:
public class Parent
{
public virtual string Name { get; set; }
public virtual string Family_id { get; set; }
}
public class Children
{
public virtual string Name { get; set; }
public virtual DateTime BirthDate { get; set; }
public virtual string Family_id { get; set; }
}
当我获取父母时,我还想获取与父母具有相同 Family_id 的最年长(按出生日期排序)的孩子。
数据库中的父子节点之间没有外键。
(我不想使用两个不同的存储库,我想要映射中的功能)
我可以使用 property-ref 吗?
一种策略是在 Children 集合上强制 Eager Load 并创建另一个属性来获取最年长的孩子。
Property-Ref 用于使用不是主键的列连接到另一个表。
public class Parent
{
public virtual int Id {get; set;}
public virtual string Name { get; set; }
public virtual string Family_id { get; set; }
public virtual Children OldestChild {
get {
return Children.OrderBy(x=>x.BirthDate).FirstOrDefault();
}}
public virtual IList<Children> Children {get; set;}
}
public class ParentMap : ClassMap<Parent>{
public ParentMap(){
Id(x=>x.Id);
Map(x=>x.Name);
HasMany(x=>x.Children).PropertyRef("Family_id").Fetch.Join();
}
}
另一种可能性是向父表 (OldestChild_FK) 添加一列,然后从子表中加入该行。
我认为您想要做的是在 Parent 上创建一个名为 OldestChild 的属性或一个 Oldest Children 列表并忽略该属性并编写一些自定义查询(HQL 或 SQL)以返回您想要的结果。
这是关于忽略 FluentNhibernate 中的属性的线程。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.