В недоумении, как сопоставить два класса в Nhibernate
-
03-07-2019 - |
Вопрос
Пожалуйста, простите за неуклюжий вопрос (если вы можете придумать, как лучше сформулировать вопрос, не стесняйтесь его редактировать).
У меня есть два класса SupportTicketCategory и SupportTicket (соответственно):
public class SupportTicketCategory
{
public SupportTicketCategory()
{ }
private int _supportTicketCategoryID;
public virtual int SupportTicketCategoryID
{
get { return _supportTicketCategoryID; }
set
{
_supportTicketCategoryID = value;
}
}
private string _supportTicketCategoryName;
public virtual string SupportTicketCategoryName
{
get { return _supportTicketCategoryName; }
set
{
_supportTicketCategoryName = value;
}
}
}
и
public SupportTicket()
{ }
private int _supportTicketID;
public virtual int SupportTicketID
{
get { return _supportTicketID; }
set
{
_supportTicketID = value;
}
}
private SupportTicketCategory _supportTicketCategory;
public virtual SupportTicketCategory SupportTicketCategory { get; set; }
Структура моей таблицы следующая:
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]
По сути, я хочу сопоставить SupportTicketCategory с SupportTicket, как это есть в моем классе, однако я не могу понять, какой тип сопоставления является правильным, и не могу найти пример этого в Интернете.
Обновлять:Я изменил свойство SupportTicketCategory на геттеры и сеттеры старой школы, и это сработало... синтаксический сахар для потери.
Решение
Если вы используете Мое поколение с Шаблон NHibernate, вы можете указать ему свою базу данных, и он создаст для вас сопоставления, чтобы вы могли увидеть, как это следует сделать.
Другие советы
Я думаю, что вы ищете элемент «многие к одному».(Это находится внутри элемента вашего класса для SupportTicket)
<many-to-one name="SupportTicketCategory" column="SupportTicketCategoryId" update="false" insert="false" />
Сопоставления «многие к одному» можно выполнить следующим образом:
<many-to-one name="SupportTicketCategory" class="SupportTicketCategory" not-null="false" column="SupportTicketCategoryId" />