我如何使用hbm或流利的方式进行简单的连接,所以我有这样的课程?
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
答案 0 :(得分:1)
这种情况需要一个具有从test_PetType
到test_Pet
的一对多映射的集合。你不应该在你的类上需要ID字段,除非你特别想手动操作它们(NHibernate应该为你处理它)。来自Ayende(NHibernate贡献者之一)here的帖子很棒。
我认为您的HBM的基本要点(改编自Ayende的帖子)应与此类似:
<set name="Pets" table="test_PetTypes">
<key column="PetId"/>
<one-to-many class="Pet"/>
</set>
我目前没有测试这个功能的设施,所以我无法验证该方案。例如,您可以在没有<set />
标记的情况下离开,而是将映射添加到更高级别。