webForumDet fria alternativet

Tips på uppbyggnad av klass för användare?

.NET

8 svar · 529 visningar · startad av inspiro

Medlem sedan sep. 2005673 inlägg
Frågan#1

Hej!

Jag tänkte sätta tänderna i ett nytt projekt och ska försöka skriva lite bättre strukturerad kod än hittills för att lära mig. :) Däremot vill jag inte komplicera till det för mycket heller så or-mappers och sådant tänkte jag ändå låta bli, jag vill göra det "rätt" men utan att dra på storsläggan så att säga... Det är och kommer alltid att vara ett litet enmansprojekt med samma databas i grunden.

Grunden i min applikation är förstås användarna så jag tänkte börja i den änden och skapa en klass för mina användare. Så här tänkte jag mig det hela:

aspx-sidan ---> user class --> database class

Säg att jag vill spara en ny användare. Som jag tänker det så har jag två angreppssätt:

Alt 1:

User u = new User();
u.NewUser(FirstName, LastName, Company);

Alt 2:

User u = new User();
u.FirstName = FirstName;
u.LastName = LastName;
u.Company = Company;
u.SaveUser();

Vilket av alternativen är bäst? Eller ska man göra på något helt annat vis? Och hur läöser man det bäst om exempelvis Company inte ska vara obligatoriskt? Ska man overrida metoden med/utan company eller skicka in en tom sträng?

Medlem sedan sep. 2005673 inlägg
#2

En fråga också gällande databasklassen... ska man använda stored procedures eller skapa frågorna i koden eller en kombination? Säg att user-klassen har en update-metod där man ibland bara vill uppdatera enskilda uppgifter, ibland alla. Ska man då hantera alla olika kombinationer med logik i själva sp:n eller dynamiskt bygga upp en sql-fråga i update-metoden eller finns det något annat sätt?

Medlem sedan feb. 2005280 inlägg
#3

Använd NHibernate så slipper du (nästan) tänka på sql frågor, rekommenderas starkt. http://www.hibernate.org/362.html

Vad gäller dina alternativ så gillar jag alt. 2 bäst, fast jag kan inte motivera med annat än att det är mer lättläst och snyggare :bire

Medlem sedan sep. 2005673 inlägg
#4

Tack för svar! Jo, jag har ju läst lite om hur ni jobbar med nhibernate (och något alternativ som jag inte kommer ihåg namnet på) men är det verkligen motiverat om det är ett litet enmansprojekt? Blir det inte en väldig massa overhead?

Medlem sedan feb. 2005280 inlägg
#5

Det tar lite tid att skapa xml mappningarna, men säg en timme kanske, det har du nog gott o väl igen sen. Det är ju lite nytt att lära in, så det kanske är det som tar lite tid, fast det är nog perfekt att köra inlärning i ett litet enmansprojekt, sen finns ju WF för att få snabba svar :)

Medlem sedan sep. 2005673 inlägg
#6

Men om man har lite mer komplicerade sql-frågor med en massa joins, temp-tabeller etc... är nhibernate fortfarande ett bra alternativ?

nhibernate, är det det som kallas or-mapper eller har jag missförstått?

Medlem sedan maj 20012 812 inlägg
#7

Om du använder .NET 3.0 så hade jag valt alternativ 3.

User user = new User(){FirstName = "Kalle", LastName = "Eriksson", Company="Företag"};

Där din kod User klass ser ut så här.

public class User{

 #region -- Properties
 public string FirstName{get;set;}
 public string LastName{get;set;}
 public string Company{get;set;}
 #endregion
}

Det är allt som behövs, men då måste du använda .NET 3.0 Om du inte gör det så förspråkare jag alternativ 1. Fördelen med .NET 3.0 är att du får med Linq To SQL som du kan använda istället för NHibernate, inte alls lika kraftfull men om det bara är ett miniprojekt så duger det säkert bra...

- M

Medlem sedan sep. 2005673 inlägg
#8

Jag använder .net 3.5 så jag antar att det funkar där med... :) Har #region någon betydelse eller är det bara en slags kommentar?

Projektet kommer inte att bli jättestort eller så men vissa sql-frågor kommer nog att bli ganska komplexa ändå med joins, gruppering, temp-tabeller, dynamisk sql etc så jag vill ha bra kontroll på mina sql-frågor. Funkar Linq ändå?

En till fråga, säg att varje användare kan låna böcker. Ska man ha en AddBooks() i User-klassen eller ska man ha en egen klass Books som på något sätt behöver veta vilken användare böckerna ska lånas ut till?

Medlem sedan dec. 19996 522 inlägg
#9

Det finns bra kodgeneratorer som exempelvis codesmith, mygen som har stöd för hibernate och mappningsfiler, c#-filer

257 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)