[英]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; }
}
由於Dealer
與Domain
之間沒有直接關系,因此我認為您無法直接進行映射。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.