2009-04-29 14 views
0

zuordnen Bitte verzeihen Sie die ungeschickte Frage (wenn Sie eine bessere Möglichkeit finden, die Frage zu formulieren, fühlen Sie sich frei, um weg zu bearbeiten).Mit Verlust, wie zwei Klassen in Nhibernate

Ich habe zwei Klassen SupportTicketCategory und Kundensupport (jeweils):

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; 
     } 
    } 


} 

und

 public SupportTicket() 
    { } 

    private int _supportTicketID; 
    public virtual int SupportTicketID 
    { 
     get { return _supportTicketID; } 
     set 
     { 
      _supportTicketID = value; 
     } 
    } 

    private SupportTicketCategory _supportTicketCategory; 
    public virtual SupportTicketCategory SupportTicketCategory { get; set; } 

Meine Tabellenstruktur ist wie folgt:

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] 

Also im Grunde möchte ich eine SupportTicketCategory wie in meiner Klasse auf das SupportTicket zu mappen, kann aber nicht fi finde heraus, was der richtige Mapping-Typ ist und finde kein Beispiel dafür auf den Interwebs.

Update: änderte ich die SupportTicketCategory Eigenschaft der alten Schule Getter und Setter und es funktionierte ... Syntax Zucker für den Verlust.

+0

Also ich denke, ich habe es selbst fixiert ... Habe ich es aus auto Getter implementiert und Setter zu Old School-Methode und es hat funktioniert ... konnte das wirklich alles sein, was ich brauchte? – Webjedi

Antwort

1

Wenn Sie MyGeneration mit der NHibernate template verwenden, können Sie es auf Ihre Datenbank verweisen und es wird die Zuordnungen für Sie vornehmen, so dass Sie sehen können, wie es getan werden sollte.

+0

Jetzt herunterladen ... – Webjedi

+0

Wenn Sie nicht mit einer Legacy-Datenbank arbeiten, empfehle ich Ihnen, die Datenbank aus der Zuordnungsdatei zu erstellen, nicht umgekehrt. Dies wird als domänengesteuerte Entwicklung bezeichnet, da Sie zuerst Domänenklassen schreiben, anschließend die Zuordnung angeben und daraus das Datenbankschema erstellen kann. Sie können dies einfach mit Nhibernates SchemaExport Tool tun. –

+0

Ich habe versucht, so zu verfahren, wie Stefan es empfiehlt, die Viele-zu-Eins-Zuordnung zu verwenden, wie in den Beispielen unten gezeigt ... und dann die Tabellen auffüllt, und es füllt immer noch nicht die Eigenschaft "SupportTicketCategory". – Webjedi

0

Ich denke, was Sie suchen, ist das "viele-zu-eins" -Element. (Dies geht in Ihrem Klassenelement für Kundensupport)

<many-to-one name="SupportTicketCategory" column="SupportTicketCategoryId" update="false" insert="false" /> 
+0

Es kommt zurück null, obwohl es ein SupportTicket mit einem supportticketcategoryid = 1 und einem entsprechenden Record von SupportTicketCategory mit einem supportticketcategoryID = 1 gibt ... vielleicht gibt es hier noch etwas anderes. – Webjedi

+0

Verwenden Sie den vollständig qualifizierten Assemblynamen in Ihrer Zuordnungsdatei wie ... class = "SupportTicketCategory, My.Namespace" ...? – Flo

+1

Es sollte eigentlich funktionieren, aber warum update = false und insert = false? –

0

Viele einem Zuordnungen wie dies getan werden kann:

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