Avatar billede lasserasch Juniormester
08. oktober 2010 - 21:43 Der er 19 kommentarer og
1 løsning

Nhybernate begynder spørgsmål - Autogenerering af hbm.xml mapping filer ud fra et objekt

Hejsa.

Har en stor eksisterende kodebase med 30 forskellige klasser.
Jeg laver idag kommunikationen mellem SQL DB og klassen manuelt.

Altså, updates, deletes, insert, select osv.

Det fungerer fint, men det indebærer selvfølgelig en del kode, når man skal sætte > 20 properties for en klasse, ud fra en database record. Og det for over 30 klasser (antallet er stadig voksende).

Derfor vil jeg gerne igang med at bruge Nhybernate. Eller i hvert fald se hvad det er for en størrelse og om det kan hjælpe mig.

Jeg er 100% på begynder niveau mht nhybernate og er igang med den indledende introduktion.

Jeg kan se at et essentielt værktøj i Nhybernate er .hbm.xml mapping files.

Mit spørgsmål er så om der findes et værktøj (Gratis eller commercielt) som kan hjælpe mig med at generere disse mapping filer. Ville være meget ked af at skulle skrive dem i hånden.

Jeg kan google mig til nogle som kan gøre det ud fra en database struktur. Men det er jeg ikke interesseret i. Jeg vil gerne kunne generere dem ud fra mine eksisterende klasser.

Findes det et værktøj som kan hjælpe mig her?

Mvh.
Lasse
Avatar billede arne_v Ekspert
08. oktober 2010 - 22:39 #1
Avatar billede arne_v Ekspert
08. oktober 2010 - 22:41 #2
Jeg antager at du mente NHibernate !
Avatar billede lasserasch Juniormester
08. oktober 2010 - 22:56 #3
Ja, selvfølgelig. NHibernate :-)

Linket virker ikke...


"We're sorry, but an error has occurred. We have been notified about the error.

Most likely this was an intermittent issue. Please try your task again. If you continue to experience issues or would like to send us more information regarding this error, please contact us here. "


Mvh.
Lasse
Avatar billede lasserasch Juniormester
08. oktober 2010 - 22:59 #4
Men http://www.nconstruct.com/NConstruct-Lite.aspx  virker :-)


Kigger på det...
Avatar billede arne_v Ekspert
08. oktober 2010 - 23:02 #5
CodePlex virker for mig.

Du rammer nok en anden sever end mig.

Prøv igen om N minutter.
Avatar billede arne_v Ekspert
08. oktober 2010 - 23:03 #6
Iøvrigt foretrækker jeg at skrive min mapping filer selv.
Avatar billede lasserasch Juniormester
08. oktober 2010 - 23:10 #7
Arne. Jeg har downloadet det og installeret, men der står som det første i deres velkomst wizard når programmet starter

"making your object/relational mapping based on your database".

Jeg ville jo gerne lave mappingsfilerne ud fra mine eksisterende objekter og ikke database strukturen.

Er det mig som overser en feat. i det program? KAn ikke lige se hvordan man kan gøre det i NConstruct Lite.


Mvh.
Lasse
Avatar billede lasserasch Juniormester
08. oktober 2010 - 23:21 #8
Ja, jeg kan se at det er den generelle holdning, at man skriver disse filer selv.

Det er nok bare fordi jeg ikke kender det så godt endnu, men min første tanke er at :

1. Jeg vil gerne lære Nhibernate fordi jeg gerne vil slippe for at skrive en masse kode som fylder mit objekt med database data.

2. Nhibernate kan hjælpe mig der, som jeg umiddelbart forstår det. Men jeg skal så selv skrive en masse mappingsfiler.

Synes at luften så går lidt af fløjten. Det virker som om man bare flytte noget taste arbejde fra et sted til et andet.


Eller er det bare mig?


Mvh.
LAsse
Avatar billede arne_v Ekspert
08. oktober 2010 - 23:23 #9
Har du ikke database strukturen?
Avatar billede arne_v Ekspert
08. oktober 2010 - 23:31 #10
Ideen i NHibernate er ikke så meget at skrive mindre kode, men snarere at lave en god separation mellem domain model og database.

Vil du vil skrive mindre kode så prøv og kig på:
  http://fluentnhibernate.org/
Avatar billede lasserasch Juniormester
08. oktober 2010 - 23:32 #11
Jo det har jeg. Men som jeg har forstået det, så skal de mappingfiler have properties for objektet at vide.

De er ikke alle stedet = kollonenavnene i de forskellige tabeller.

Så 'CustomerId' property på mit objekt kan godt være 'custid' i DB tabellen.

Og så kan man vel ikke bruge db tabellerne som udgangspunkt for at lave mappings filer eller?
Avatar billede arne_v Ekspert
08. oktober 2010 - 23:41 #12
Der skal sammenkobles class property og table column.

Hvis ikke navnene matcher kan du blive nødt til at håndrette filen.
Avatar billede arne_v Ekspert
08. oktober 2010 - 23:42 #13
Medmindre den kan lave noget udfra rækkefølgen, men det ved jeg ikke om den kan.
Avatar billede lasserasch Juniormester
09. oktober 2010 - 00:55 #14
Ja okay, det er mig som har misforstået ideen med Nhibernate lidt.

Ved ikke helt om jeg synes det er så smart igen, men nu fattede jeg da ideen bag det :-)

Smid svar for points.

Tak for hjælpen.

Mvh.
Lasse
Avatar billede arne_v Ekspert
09. oktober 2010 - 01:42 #15
Som sagt hvis du vil have det så nemt som muligt så brug Fluent NHibernate.

NHibernate's styker ligger ikke bare i separationen men også i en lang række andre features:
- database uafhængig kode
- nem brug af auto increment (identity)
- support for lazy loading
- support for flere forskellige mapninger af arv mellem klasser
- indbygget cache
- mulighed for at logge SQL der udføres
etc.
Avatar billede arne_v Ekspert
09. oktober 2010 - 01:42 #16
og et svar
Avatar billede lasserasch Juniormester
09. oktober 2010 - 02:28 #17
Hermed points.

Ja, kan godt se fordelene. Specielt omkring det med at man bliver uafhængig af database valg. :-)

Synes dog også at man mister noget overblik og kontrol, fordi man får et lag mere på, men det er nok mere et spørgsmål om at få sat sig ind i værktøjet.

Mvh.
Lasse
Avatar billede arne_v Ekspert
09. oktober 2010 - 02:47 #18
Jeg vil nu mene at du har fremragende kontrol og OK overblik med de mapping filer. Hvis du har tid så prøv og brug tid på at læse dig igennem noget af alt det du kan angive i de mapping filer. Det er ikke småting.

Men det er kode som skal vedligeholdes fuldstændigt ligesom C# kode.

Hvis det er et problem så hop på Fluent.
Avatar billede Syska Mester
09. oktober 2010 - 20:46 #19
Der er jo også Linq2sql, subsunic og EF4.
Avatar billede Syska Mester
09. oktober 2010 - 20:47 #20
Hvis du vil have det nemt, så skulle du nok også have navngivet dine sql tables med de navne du bruger i din model. :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester