2015-11-04 58 views
0

我使用的是NHibernate 2.2,我想通過XML映射中的兩列進行簡單連接。NHibernate加入多列

比方說,我有兩個表:

enter image description here

現在我想要一個簡單的選擇,並加入了兩個表:

SELECT t1.*, t2.ProductionDate 
FROM table1 
JOIN table2 t2 ON t1.Name = t2.Name AND t1.Price = t2.Price 

我怎樣才能做到這一點NHibernate的與XML的映射?

回答

1

在XML映射中,可以映射類之間的關係。只有當你的班級有這樣的關係:

class Class1 
    { 
    public Class2 { get; set; } 
    } 

你可以映射這個關係。但它通常需要使用主鍵進行關聯。有一種方法可以使用property-ref來映射其他屬性,但是在那裏它開始變得很奇怪,特別是當有多個列進來時。

我懷疑你在類中有這樣的關係。

因此,鏈接只能在查詢中進行。它與你在SQL中的做法相似。請注意,HQL中的「連接」僅限於實際關係(正如我上面所演示的),而不是任意的屬性比較(不像SQL,沒有區別)。

HQL:

select c1.*, c2.ProductionDate 
from Class1 c1, Class2 c2 
where c1.Name = c2.Name and c1.Price = c2.Price 

這是不可能的標準(除非使用子查詢,但你不能返回ProductionDate)。除了回退到SQL之外,沒有辦法使它成爲外部聯接。

評論:您可能認爲NHibernate在這裏幫助不大。事實確實如此。原因是NHibernate是一個ORM,可以讓你以面向對象的方式實現你的業務邏輯。你在這裏的關係不是典型的面向對象的關係。這不是你在純粹的面向對象設計中通常處理類的方式。

+0

感謝您的回答!我最終在xml部分使用了一個查詢。我這樣做了,所以我可以將我的代碼中的引用更改爲特定的文件。我需要這個以保持與不同的數據庫版本兼容。 – Franki1986