2009-08-07 48 views
0

我如何做到這一點與HBM或流利的簡單連接,所以我有這樣的一個類?如何 - 簡單Nhibernate加入

public class Pet 
{ 
    public Pet() {} 

    public virtual int PetId { get; set; } 
    public virtual int PetTypeId { get; set; } 
    public virtual string Name { get; set; } 
} 

CREATE TABLE [dbo].[test_PetTypes](
    [PetTypeId] [int] IDENTITY(1,1) NOT NULL, 
    [Name] [nchar](10) NOT NULL 
) ON [PRIMARY] 

CREATE TABLE [dbo].[test_Pet](
    [PetId] [int] IDENTITY(1,1) NOT NULL, 
    [PetType] [int] NOT NULL 
) ON [PRIMARY] 

SELECT  dbo.test_Pet.*, dbo.test_PetTypes.Name 
FROM   dbo.test_Pet INNER JOIN 
         dbo.test_PetTypes ON dbo.test_Pet.PetType = dbo.test_PetTypes.PetTypeId 

回答

1

這種情況要求有一個一對多映射了一套從test_PetTypetest_Pet。你不應該需要你的類的ID字段,除非你特別想手動操作它們(NHibernate應該爲你處理)。 Ayende(NHibernate的貢獻者之一)here有一篇很棒的文章。

我覺得你HBM的基本要點(改編自Ayende的帖子)應該是與此類似:

<set name="Pets" table="test_PetTypes"> 
    <key column="PetId"/> 
    <one-to-many class="Pet"/> 
</set> 

我沒有在時刻,以測試這一點的設施,這樣我就可以」 t驗證場景。例如,您可以在沒有<set />標記的情況下離開,而是在較高級別添加映射。