簡體   English   中英

流利的Nhibernate映射多個聯接

[英]Fluent Nhibernate Mapping Multiple Join

我有點像Nhibernate新手,但我一直在研究,但無法弄清楚如何使用Nhibernate映射完成我想要的事情。

我的對象有下表

  • 公司介紹
  • 經銷商

域可以有許多公司,而公司可以屬於許多域。 公司有很多經銷商,但經銷商只屬於一個公司。 我想為我的網域建立映射,以通過“公司”生成屬於它的所有經銷商的列表。

我有一個稱為CompanyDomains的聯接表(帶有CompanyID和DomainID列),該表維護着Company和Domains之間的多對多關系。 該表當前未在我的Nhibernate設置中進行映射...我只是在域映射中將其與HasManyToMany一起加入。 Dealers表有一個帶有CompanyID的列。

我想要的結果可以通過SQL查詢輕松獲得:

SELECT * FROM Dealers
JOIN Companies on Companies.ID = Dealers.CompanyID
JOIN CompanyDomains on Companies.ID = CompanyDomains.CompanyID
WHERE DomainID = 1

這給了我分配給域的所有經銷商。

我的問題是,我想為此在我的域映射中列出一個經銷商。 如何使用Nhibernate進行映射?

如果我在其他地方忽略了此解決方案,請指出正確的方向,否則,我感謝您可以提供的任何幫助。

謝謝! 埃里克

一種可能的解決方案是為具有HasMany的公司映射Dealers集合,並向Domain添加便民屬性:

public class Domain
{
    ...
    public virtual IList<Company> Companies { get; private set; }
    public IList<Dealer> Dealers 
    { 
        get { return Companies.SelectMany(x => x.Dealers).Distinct(); }
    }
}

public class Company
{
    ...
    public virtual IList<Domain> Domains { get; private set; }
    public virtual IList<Dealer> Dealers { get; private set; } 
}

public class Dealer
{
    ...
    public virtual Company Company { get; private set; }
}

由於DealerDomain之間沒有直接關系,因此我認為您無法直接進行映射。

暫無
暫無

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

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