如何-简单的Nhibernate连接

如何-简单的Nhibernate连接,nhibernate,Nhibernate,我如何使用hbm或Fluence来完成这个简单的连接,这样我就有了这样一个类 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

我如何使用hbm或Fluence来完成这个简单的连接,这样我就有了这样一个类

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

这种情况需要一个从
test\u PetType
test\u Pet
的一对多映射集。您不应该在类中需要ID字段,除非您特别想手动操作它们(NHibernate应该为您处理)。Ayende(NHibernate的贡献者之一)有一篇很棒的帖子

我认为你的HBM(改编自Ayende的帖子)的基本要点应该与此类似:

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

我目前没有设备来测试这个,所以我无法验证这个场景。例如,您可以不使用
标记,而是在更高级别添加映射