Em uma perda, como mapear duas classes em Nhibernate
-
03-07-2019 - |
Pergunta
Por favor, perdoe a pergunta desajeitada (se você pode descobrir uma maneira melhor palavra a sensação pergunta livre para editar distância).
Eu tenho duas classes SupportTicketCategory e SupportTicket (respectivamente):
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;
}
}
}
e
public SupportTicket()
{ }
private int _supportTicketID;
public virtual int SupportTicketID
{
get { return _supportTicketID; }
set
{
_supportTicketID = value;
}
}
private SupportTicketCategory _supportTicketCategory;
public virtual SupportTicketCategory SupportTicketCategory { get; set; }
Meu estrutura de tabela é a seguinte:
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]
Então, basicamente, eu quero mapear uma SupportTicketCategory para o SupportTicket como é na minha classe, porém eu não consigo descobrir o que é o tipo de mapeamento adequado e não pode encontrar um exemplo disso nas interwebs.
Update: Eu mudei a propriedade SupportTicketCategory para getters da velha escola e setters e funcionou ... açúcar sintaxe para perda.
Solução
Se você usar MyGeneration com o NHibernate modelo , você pode apontá-lo para o seu banco de dados e ele vai fazer os mapeamentos para você, para que você possa ver como ele deve ser feito.
Outras dicas
Eu acho que o que você está procurando é o elemento "muitos-para-um". (Isto vai dentro do seu elemento de classe para SupportTicket)
<many-to-one name="SupportTicketCategory" column="SupportTicketCategoryId" update="false" insert="false" />
muitos para um mapeamento pode ser feito assim:
<many-to-one name="SupportTicketCategory" class="SupportTicketCategory" not-null="false" column="SupportTicketCategoryId" />