簡體   English   中英

流暢的 NHibernate:Map 屬性沒有外鍵?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM