PMedlem sedan jan. 20012 204 inlägg Hmm har en sql-databas med olika "inställningar" i en tabell ( lite olika inställningar beroende på vem som loggat in. )
Nu funderar jag lite på hur det är bäst att hämta dessa.... ska jag hämta det "i koden" eller via nån function/class..... nån som har lite tips och kodexempel eller så? :q
SPiNMedlem sedan mars 20007 896 inlägg Bygg objektorienterat enligt nTier-modell, alltså med komponenter och bakomliggande kod ( Klasser, ja ). Använd så lite .NET som möjligt på dina .aspx-sidor. Om det bara är ett litet projekt så krävs det ju inte att du bygger på detta sätt, men är det en större applikation blir det skalbart, snyggt och smidigt.
ZyaxMedlem sedan mars 200262 inlägg Skapa en UserClass med en hashtabell där användarens alla inställningar sparas sedan kan du göra metoder för att hämta och spara inställningar.
Givetvis skall du ha en massa annat godis i UserClass.
PMedlem sedan jan. 20012 204 inlägg
Skapa en UserClass med en hashtabell där användarens alla inställningar sparas sedan kan du göra metoder för att hämta och spara inställningar.
ehhh förstår inte riktigt.... någon kod att visa med? nTier?
ZyaxMedlem sedan mars 200262 inlägg public class User {
private Hashtable properties;
public User(){
//code that gets data from sql and fills hashtable with properties
}
public string GetProperty(string propertyid){
return properties[propertyid];
}
public string SetProperty(string propertyid,string propertyvalue){
// om inte propertien finns lägg till den i hashtabellen och inserta den i sql
//om den finns updatera den i hashtabellen och updatera den i sql
}
...mer kod
}
ZyaxMedlem sedan mars 200262 inlägg Skall du göra ett seriöst jobb eller bara en egen sida eller något annat halvseriöst (typ föreningssida) ??
Vi kanske skall använda något annat sätt om du inte skall sälja ditt jobb, typ.
PMedlem sedan jan. 20012 204 inlägg Har tänkt att "sälja" det genom uthyrning så det är ett seriöst arbete...
ZyaxMedlem sedan mars 200262 inlägg Har du gjort klasser bakom innan eller?
ZyaxMedlem sedan mars 200262 inlägg Hmm. Programmerar du i C#?
ZyaxMedlem sedan mars 200262 inlägg Då blir det svårt för mig att förklara. Jag överger nog detta, tyvärr. Har egna seriösa jobb att klara av också...
PMedlem sedan jan. 20012 204 inlägg vet inte någonstans där man kan läsa lite om det?
NETworkMedlem sedan juni 20011 732 inlägg För att återgå till din huvudfråga "ska jag hämta det "i koden" eller via nån function/class" så är problemet var du ska lägga dina inställningsdata om jag förstått dig rätt? Att du ska hämta dessa i koden är ganska självklart ;) och att du skapa en egen klass för detta är naturligtvis ingen nackdel.
Vad är det för inställningsdata som du ska hämta och vad ska de användas till? Om jag har förstått dig rätt så har du redan en "inloggad person" på vilken du ska koppla på olika inställningar i form av data från en databas? En hashtabell är säkert en mycket bra och kompetent lösning (vågar dock inte ge mig in i någon diskussion om det, kan inte speciellt mycket om hashtabeller!) men det finns ju många lättare alternativ.
Jag tycker exempelvis att en cookie ofta är ett utmärkt alternativ för att personifiera en webb mot en specifik användare!
Redigerat: Med reservation för att det kanske är jättelätt att skapa en hastabell och att det är både snabbare coh bättre och... ja. Ska läsa på lite mer om hastabeller tror jag! :)
ZyaxMedlem sedan mars 200262 inlägg public class User {
private Hashtable properties;
public User(){
//code that gets data from sql and fills hashtable with properties
}
public string GetProperty(string propertyid){
return properties[propertyid];
}
public string SetProperty(string propertyid,string propertyvalue){
// om inte propertien finns lägg till den i hashtabellen och inserta den i sql
properties.Add(propertyid,propertyvalue);
//om den finns updatera den i hashtabellen och updatera den i sql
properties[properttyid]=propertyvalue;
}
...mer kod
}
Lade till två rader i koden. Nu har du dina properties, var det svårt??
NETworkMedlem sedan juni 20011 732 inlägg Ok, nu har jag försökt lära mig lite om hashtabeller. Om jag förstått det hela rätt så är en hashtabell en slags array med länkade listor kopplade till sig. En bra strukturerad hashtabell är snabbare än en länkad lista om du har många objekt som ska lagras (åtminstone när du hämtar data, inte skriver). Har du endast ett fåtal objekt som ska lagras tjänar du ingen hastighet på en sådan, tvärtom.
Nåja, hur lagring av data sker bakom skalet behöver du inte förstå, det sköter .net åt dig. Vad jag skulle komma till är att du använder olika typer av arrayer på samma sätt (där även en cookie är en länkad lista tror jag) ... det är alltså varken svårare eller lättare att använda en hashtabell. Har du många objekt som ska lagras i denna använder du en hastabell, har du ett fåtal använder du en arraylist istället. Eller om du exempelvis vill utnyttja fördelarna med en cookie, använd en sådan istället!
Vill du lära dig mer om sån här goja ska du läsa en kurs i algoritmteori! Kan inte tänka mig något tråkigare... :)
renholmMedlem sedan apr. 20012 266 inlägg Hum, du skulle kunna skapa en egen class som byter ut Context.User.Identity till en din egna klass där du kan spara alla inställningarna som användaren har. Sedan kommer du lätt åt inställningarna via ((myClass)Context.User.Identity).MyOwnValue.
Och i din klass som du byter ut Identity med lägger du in alla inställningar man kan ha. Denna klass måste även ärva från System.Security.Principal.IIdentity.
ptypeMedlem sedan juni 2002151 inlägg
Ok, nu har jag försökt lära mig lite om hashtabeller. Om jag förstått det hela rätt så är en hashtabell en slags array med länkade listor kopplade till sig. En bra strukturerad hashtabell är snabbare än en länkad lista om du har många objekt som ska lagras (åtminstone när du hämtar data, inte skriver). Har du endast ett fåtal objekt som ska lagras tjänar du ingen hastighet på en sådan, tvärtom.
Nästan rätt, men skippa det med de länkade listorna (även om man kan hasha länkade listor också, om man vill). En hashtabell är som en array. Grejen med hash är att du utgående från ett objekt vet var i arrayen du ska leta. Detta genom att man har en smart funktion som hashar (räknar ut en kod) beroende på objektets innehåll. Man börjar sedan försöka skriva på denna plats i arrayen, men är det fullt så fortsätter man söka tills en ledig plats finns. Man vill alltså ha en hashfunktion som har så bra spridning som möjligt i arrayen.
Vill du lära dig mer om sån här goja ska du läsa en kurs i algoritmteori! Kan inte tänka mig något tråkigare...
Inte så tråkigt faktiskt. :)
NETworkMedlem sedan juni 20011 732 inlägg
ptype skrev:
Nästan rätt, men skippa det med de länkade listorna (även om man kan hasha länkade listor också, om man vill). En hashtabell är som en array. Grejen med hash är att du utgående från ett objekt vet var i arrayen du ska leta. Detta genom att man har en smart funktion som hashar (räknar ut en kod) beroende på objektets innehåll. Man börjar sedan försöka skriva på denna plats i arrayen, men är det fullt så fortsätter man söka tills en ledig plats finns. Man vill alltså ha en hashfunktion som har så bra spridning som möjligt i arrayen.
Men vad är skillnaden mellan en länkad lista och den lista som du har för varje position i din hachtabell? Ursäkta om det blir OT, men det skulle vara kul att förstå det här lite bättre.
Det jag fått lära mig är att en vanlig array har en pekare, sedan ligger arrayen där med en bestämd längd. EN länkad lista har pekare från varje object och kan därför vara dynamiskt lång. Detta gäller väl även för varje given plats i en hachtabell, där du kan ha en dynamisk längd på listan?
Algoritmteori är säkert roligt... om man inte är en halvt misslyckad ekonom som ligger på plus och minusnivån som jag gör. ;)