不知如何在Nhibernate中映射两个类

不知如何在Nhibernate中映射两个类,nhibernate,nhibernate-mapping,Nhibernate,Nhibernate Mapping,请原谅这个笨拙的问题(如果你能想出一个更好的方法来表达这个问题,请随意编辑) 我有两个类SupportTicketCategory和SupportTicket(分别): 及 我的表格结构如下: CREATE TABLE [dbo].[supporttickets]( [supportticketid] [int] IDENTITY(1,1) NOT NULL, [supportticketcategoryid] [int] NOT NULL, CONSTRAINT [PK_supporttic

请原谅这个笨拙的问题(如果你能想出一个更好的方法来表达这个问题,请随意编辑)

我有两个类SupportTicketCategory和SupportTicket(分别):

我的表格结构如下:

CREATE TABLE [dbo].[supporttickets](
[supportticketid] [int] IDENTITY(1,1) NOT NULL,
[supportticketcategoryid] [int] NOT NULL,
 CONSTRAINT [PK_supporttickets] PRIMARY KEY CLUSTERED 
(
    [supportticketid] ASC
)
) ON [PRIMARY]

ALTER TABLE [dbo].[supporttickets]  
WITH CHECK ADD CONSTRAINT
[FK_supporttickets_supportticketcategories] 
FOREIGN KEY([supportticketcategoryid])
REFERENCES [dbo].[supportticketcategories] ([supportticketcategoryid])

ALTER TABLE [dbo].[supporttickets] CHECK CONSTRAINT  [FK_supporttickets_supportticketcategories]

CREATE TABLE [dbo].[supportticketcategories](
    [supportticketcategoryid] [int] IDENTITY(1,1) NOT NULL,
    [supportticketcategoryname] [varchar](50) NOT NULL,
 CONSTRAINT [PK_supportticketcategories] PRIMARY KEY CLUSTERED 
(
    [supportticketcategoryid] ASC
)
) ON [PRIMARY]
因此,基本上,我想将SupportTicket类别映射到SupportTicket上,就像在我的类中一样,但是我无法确定正确的映射类型,也无法在互联网站上找到这样的示例

更新:
我将SupportTicketCategory属性更改为旧式的getter和setter,它起了作用……语法糖弥补了损失。

如果与一起使用,您可以将它指向数据库,它将为您进行映射,这样您就可以看到应该如何进行映射。

我想您正在寻找的是“多对一”元素。(这在SupportTicket的类元素中)


多对一映射可以这样做:

<many-to-one name="SupportTicketCategory" class="SupportTicketCategory" not-null="false" column="SupportTicketCategoryId" />


即使存在supportticketcategoryid=1的SupportTicket票证和supportticketcategoryid=1的SupportTicketCategory对应记录,它也返回null。。。可能还有其他原因在起作用。您是否在映射文件中使用完全限定的程序集名称,如…class=“SupportTicketCategory,My.Namespace”?它实际上应该可以工作,但是为什么update=false和insert=false呢?如果您不使用遗留数据库,我建议您从映射文件创建数据库,而不是从映射文件创建数据库。这称为域驱动开发,因为您首先编写域类,然后指定映射,然后可以从中创建数据库模式。您只需使用Nhibernates SchemaExport工具就可以做到这一点。我尝试按照Stefan的建议使用多对一映射,如下面的示例所示……然后填充表,但仍然无法填充SupportTicketCategory属性。因此,我想我自己修复了它……我将它从自动实现的getter和setter改为旧式方法和它的工作…这真的是我所需要的吗?
CREATE TABLE [dbo].[supporttickets](
[supportticketid] [int] IDENTITY(1,1) NOT NULL,
[supportticketcategoryid] [int] NOT NULL,
 CONSTRAINT [PK_supporttickets] PRIMARY KEY CLUSTERED 
(
    [supportticketid] ASC
)
) ON [PRIMARY]

ALTER TABLE [dbo].[supporttickets]  
WITH CHECK ADD CONSTRAINT
[FK_supporttickets_supportticketcategories] 
FOREIGN KEY([supportticketcategoryid])
REFERENCES [dbo].[supportticketcategories] ([supportticketcategoryid])

ALTER TABLE [dbo].[supporttickets] CHECK CONSTRAINT  [FK_supporttickets_supportticketcategories]

CREATE TABLE [dbo].[supportticketcategories](
    [supportticketcategoryid] [int] IDENTITY(1,1) NOT NULL,
    [supportticketcategoryname] [varchar](50) NOT NULL,
 CONSTRAINT [PK_supportticketcategories] PRIMARY KEY CLUSTERED 
(
    [supportticketcategoryid] ASC
)
) ON [PRIMARY]
<many-to-one name="SupportTicketCategory" column="SupportTicketCategoryId" update="false" insert="false" />
<many-to-one name="SupportTicketCategory" class="SupportTicketCategory" not-null="false" column="SupportTicketCategoryId" />