簡體   English   中英

流利的Nhibernate映射/加入

[英]Fluent Nhibernate mappings / Join

在我的代碼中,我有三個主要實體:1.公司2.員工3.職位

員工可以在各個公司中擔任多個職位。

我想檢索與特定公司相關的所有員工。

在代碼中,我會做類似的事情:

public partial class Company
{
    public virtual IEnumerable<Position> Positions { get; protected set; }
    public virtual IEnumerable<Staff> Staffs
    {
        get { return Positions.Select(x => x.Staff); }
    }
}

class CompanyMap : ClassMap<Company>
{
    public CompanyMap()
    {
        Id(x => x.Id)
            .Column("CompanyId")
            .GeneratedBy.Identity();
        Map(x => x.Name)
            .Not.Nullable();

        HasMany(x => x.Positions)
            .KeyColumn("CompanyId")
            .AsBag();
    }
}

PB:在此解決方案中,我將加載與公司相關的所有職位,然后再與每個職位相關的所有人員...在績效方面,我猜不是很好...

我敢肯定,有一種更好的方法可以直接在CompanyMap類中執行此連接。

你能幫我做到嗎?

謝謝塞巴斯蒂安

如何更改數據模型? Staff似乎總是處於給定Company級別的給定Position集合中。 這建議以下模型

public partial class Staff
{
   public virtual IEnumerable<CompanyPosition> Positions { get; protected set; }
}

public class Position
{
  //...
}

public class Company
{
 //...
}

public class CompanyPosition
{
  public virtual Company Company   {get;set;}
  public virtual IEnumerable<Position> {get;set;}
}

有了這個,您可以進行簡單的映射,並且您的查詢最終與此類似

var data = session.Query<Staff>().Where(s=>s.CompanyPosition.Company == company);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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