Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Hjälp med design

Postades av 2005-05-04 09:39:39 - Tomas Lundgren, i forum arkitektur, Tråden har 4 Kommentarer och lästs av 1277 personer

Jag är ganska ny när det gäller arkitektur, klasser och lager så jag har några frågor för att komma igång. Det är en ganska enkel sak jag vill åstadkomma men jag vill för en gång skull göra det på ett snyggt sätt.

Jag har en applikation där jag ska hantera företag mot tabellen tblForetag. Tabellen innehåller fält för bla. Namn, adress, telnr, prislista etc. Jag hade tänkt hantera detta via en datagrid med möjlighet för att lägga till, ta bort och uppdatera.

När jag har jobbat tidigare har jag alltid haft ett projekt i vs.net där jag skapat en Component och i den lagt connection, dataadapter, dataset. Detta har jag gjort med hjälp av designern i vs.net så jag får typade dataset i en xsd fil och vs genererar kod för delete, select, update, insert. Mot min component skapar jag en class där jag lägger metoder för tex, GetAllaForetag() och UpdateForetag(dataset).

Detta är det ända jag gör för att "skikta" applikationen vilket gör att det bli mycket kod i min codebehinde sida för datagridden. Min fråga är hur man ska göra detta på ett snyggt sätt med lager etc och vilka motoder ska ligga i vilket lager.

I min codebehind för att lägga till företag skulle jag bara vilja ha tex.
Dim oForetag as new Foretag
oForetag.add.Namn=tboxNamn.text
oForetag.add.Telnr=tboxTelnr.text.
oForetag.add.save()

eller kanske skapa en foretags collection

oForetag.add(foretagCollectioin)


Hur skulle ni göra? Det jag vill ha med är även tidsåtgången, det kanske går att bygga det kanon snyggt men det tar lång tid och kanske inte är värt det?

/Tomas, som har svamlat om saker han inte känner till :-)


Svara

Sv: Hjälp med design

Postades av 2005-05-04 10:14:16 - Andreas Håkansson

Du vill ha ett enkelt sätt att mappa entiteter (objekt) med din databas? Då finns det verktyg som gemensamt kallas för O/R (Object/Relation) Mapper. Det finns massor av sånna till .NET men en som jag själv använder är NPersist www.npersist.com som är gratis. MYCKET trevligt att arbeta med en O/R Mapper.. kombinera NPersist med ObjectMapper verktyget www.objectmapper.com och du kommer öka din produktivitet och antalet skrivna kod enormt.

Vid intresse skulle kan kanske kunna skriva ihop en artikel inom kort om just detta.


Svara

Sv: Hjälp med design

Postades av 2005-05-04 10:21:52 - Per Hultqvist

Får jag bara föreslå att du håller dig till antingen engelska (rekommenderas av mig för att slippa eventuella å,ä och ö-problem) eller svenska. GetAllaForetag låter lite illa i mina öron i alla fall :-)


Svara

Sv: Hjälp med design

Postades av 2005-05-04 10:52:18 - Ola Lindfeldt

Så här gjorde vi senast och det har funkat väldigt bra:

Alla dataåtkomstklasser ligger i en egen class library asembly (DLL)
(Add new project.. Class library)
Ex "Foretag"

Alla klasser börjar med

Imports System.Data.SqlClient
Imports Microsoft.ApplicationBlocks.Data

(samt kommentarer om vad klassen gör.)

Data Access Application Block
http://www.microsoft.com/downloads/details.aspx?FamilyId=F63D1F0A-9877-4A7B-88EC-0426B48DF275&displaylang=en

Alla klasser har samma slags metoder: Get, Insert, Update, Delete.
Databasen är SQL server.
All SQL går via stored procedures.

exempel

Public Sub GetGrupp(ByVal GruppId As Integer)

SqlHelper.FillDataset(Params.ConnStr, _
CommandType.StoredProcedure, _
"GruppSel", DsGrupp, New String() {DsGrupp.KFGrupp.TableName}, New SqlParameter("@GruppId", GruppId))

End Sub


Klasserna håller ett typat dataset, ex DsGrupp, (som vi har låtit VS autogenerera på en dummy-sida och sedan har vi kopierat det till vår klass)

Vi använder typade Dataset för att hämta/spara EN post. För att visa listor används SqlDataReader (SqlHelper.ExecuteReader) för prestandans skull, att mellanlagra ett dataset i det fallet är inte bra.
Det betyder att vi slipper skriva en miljard properties som bara håller data in/ut ur databasen men inte fyller nån annan funktion, eller metoder med tiotals inparametrar.
En annan fördel vi får nästan gratis: Systemet ska prata med andra system gemom XML. Eftersom vi har typade Dataset är det en barnlek att extrahera våra olika objekt som XML, eller tvärtom.

"Params" är sytemglobala parametrar som kapslar in t.ex:
System.Configuration.ConfigurationSettings.AppSettings.Get("something")
i form av Public Shared ReadOnly Property
Allt för att underlätta för oss själva och snabba upp arbetet.

Vi försöker återanvända så mycket som möjligt. Grundregeln är: Skriver du ungefär samma kod på två ställen, då skall det göras om till något som kan återanvändas och anropas på båda ställena.. (vi är inte 100% där men målsättningen finns.. :)

För insert/update använder vi:
SqlHelper.ExecuteScalarTypedParams(Param.ConnStr, _
"GruppIns", Me.DsGrupp.KFGrupp.Item(0))

Dvs: vi fyller en rad i en Datatabell och skickar in den raden till ExecuteScalarTypedParams.
Det är en fiffig metod som själv kommer at extrahera StoredProcedure-parametrar som matchar namnen på fälten i DataTabellen (och sedan cachar detta i minnet så det blir i nästa anrop snabbare än att skapa Nya parametrar..)

Detta är inte världens mest avancerade eller optimala designmönster, men enl min erfarenhet mer än tillräckligt bra i 95% av alla fall jag har stött på.

Det två vanligaste misstagen vid systemutveckling:
1. Inget designmönster alls: man får ohållbar spaghettikod och ett system i kaos.
2. Overkill med mönster/metoder/regler: man får en byråkratisk systemutveckling där alla förändringar kostar dubbelt så mycket och tar tre gånger så lång tid.

Knepet är att ligga på 1,5 ;)




Svara

Nyligen

  • 21:41 Automotive Services UK
  • 20:44 Erfarenhet av CBD-olja mot sömnpro
  • 12:13 Sex Dolls for Sale
  • 19:42 Online Casinos for Haitian Players
  • 19:38 Rekommendera något intressant
  • 19:13 Международная перевозка грузов
  • 00:01 DL Van Tuning | Exclusive Body Kit
  • 12:08 Indian casino

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 888
27 965
271 776
3 097
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies