Hejsan.. Hei Patrik! Hej Hej igen!dataset..
Håller på och leker med datasets som jag tycker verkar väldigt smidigt att jobba med men har stött på lite problem, och det verkar inte som om jag är den enda personen med dessa funderingar då man kikar i olika newsgroups.
Datasets är väldigt smidiga att fylla och spara till och från databasen. Lätta att binda till all grafiska komponenter. getChanges metoden är suverän för att endast skicka uppdateringar till databaslagert. Jag tycker om det.. men..
Jag är relativt färsk från skolan och har där lärt mig objektorientering. Tycker om att ha en snygg och ren programdesign så långt det går. Det bör då det finns tre lager. Ett grafiskt lager(GUI), ett business lager(BL), som hanterar logiken med alla mina business objekt och ett databaslager(DAL) som sparar ner och hämtar populerar (taskig översättning) mina objekt.
GUI skall inte känna till vad som händer i BL
BL skall inte behöva veta vad det är för GUI som visar datan.
DAL skall inte behöva vet vilket BL eller GUI som används.
Skulle jag göra detta i Java så hade mitt BL haft metoder för att stoppa in saker i en lista, plocka bort och hämta saker från listan. Varje objekt skulle ha set- och getmetoder för att validera data som stoppas in i dem, så att jag kan fånga felen så fort som möjligt. Valideringen skall se i det objektet som har datan, dont talk to strangers.
Ett litet exempel
Gui.
Client := BL.getClient(id);
Try{
Client.name = 324;
}
catch {
print(“fel som tusan “);
}
Kundobjektet kommer att kasta ett exception pga. ett fel har uppstått i detta objekt. Guit behöver således inte veta vad som gick fel och skall inte, om man är oopurist, inte heller behöva veta detta. Det kommer endast att förstå att något har gått fel inte varför det gick fel, den informationen får jag från den aktuella klassen.
Att göra detta i .net känns lite jobbigt då man har en fin teknologi i datasetet, som är mycket bra i många fall. Men jag kan inte få in mina business regler på något vettigt sätt i dessa. Jag kan ärva och utöka hela datasetet men då känns det som jag lika gärna kunde ha byggt mina objekt från scratch. Jag kan jobba med rowupdated händelsen men känns inte hundra procent det heller.
Jag vill göra detta på snabbast möjliga sätt och ändå har bra struktur i mitt program och gärna en så oo design som möjligt.
Så jag undrar hur ni andra gör med detta..
Har funderat på ett par lösningar men vet inte om jag gillar dem..
*Varje formulär som jobbar med ett visst dataset har åtkomst till en statisk klass som har metoder för att validera en viss rad, i denna klass så finns mina regler. Har fortfarande ett lager som hanterar alla dataobjekten eller raderna i en viss tabell i datasetet.
*Strunta helt i att tänka rent oo, och bygga lätta klasser, komponenter som har all logik för att hantera ett visst dataset, tex kunder, denna klass el komponent kan sväva fritt i systemet och är inte beroende av något visst lager utan innehåller alla metoder för att spara kunderna till databasen, hämta , validera kunder, ett BL i miniatyr.Sv: dataset..
Precis som du hadde jag också samma fråga når jeg hørte om dataset for första gången. Et dataset har jo mange attraktive egenskaper att man nesten vill gjöre allt ihop med det och sentrera programmet rundt et dataset. Men vi skal då komme ihåg at et dataset aldrig blev designet til å brukes som et fristående business objekt. Hellre se det som en database eller data container i miniatyr tilpasset transport över olika arkitektur lager. Ja, eller rent av som en "in memory" database.Sv: dataset..
Tack Gunnar för ditt svar, det var mycket uppskattat..
Har lusläst msdn efter något sorts exempel på hur dataset skall användas men hittar inget vettigt.
Funderar på att göra ett litet exempel som man senare skulle kunna föra en disskusion runt och kanske kunna hitta nya vinklingar och lösningar hur datasets skall användas.(?)
Det finns fina exemepl för webben tex Duwamish. Där används dataset ganska flitigt men det är ju en realtivt tillståndslös lösning i och med det är webb.. Skulle gärna vilja se ett likanden exempel men för en "riktig" applikation.
//patrikSv: dataset..
Titta på Microsoft patterns & practices
http://msdn.microsoft.com/practices/
Der vill du hitta diskusjoner og riktlinjer for hur man designar applikasjoner i .NET. Fokusera inte för mycket på datasetet i sig, se det som et hjelpmedel.
Dataset kan jo användes på typ tre huvudområden:
* dataset embedded i en klass som en member variabel
* Metoder/operasjoner som tar dataset som in/ut parametre
* Klasser arver ifra dataset
âven i en desktop applikasjon som verker aldrig så monolitisk så kan du jo internt organisera applikasjonen din i tre delar, UI - BL - DL.
Till exempel:
I en desktop applikasjon så kan jo DL koden vara lese/skrive alle data ifrån disk eller at du använder gratis versjonen av SQL Server (MSDE). MSDE du jo fritt distribuere sammen med dine applikasjoner. Då kan exempelvis DL klassen(e) dine ha et embedded dataset som BL prater via DL's operasjoner som enten tar olika parametre (navn, adresse, telf till exempel)eller rentav et dataset som parameter.
Det meste av informasjonen på MSDN tar som du sier utgangspunkt i hvordan man bruker dataset og ikke hvordan den inngår i en løsning. Derimot finnes jo lite Web app exempel og man kan jo ta lärdom ifra dom selv om man ikke skriver web applikasjoner. Om du ikke finner noe på den linken ovenfor, så er vel en bok om emnet at föredra.