Toon posts:

[.NET/C#/VS.NET/Databases] class of component?

Pagina: 1
Acties:

Verwijderd

Topicstarter
De masochisten daargelaten, vinden de meeste programmeurs typen leuk maar hoe minder hoe beter. En over dat typen gaat deze vraag.

In bv VB6 was het creeeren van een middle-tier database objectje toch nog wel een hoeveelheid tikwerk, ookal kun je veel wegstoppen in classes die je 1 keer schrijft en telkens weer gebruikt. Bij het gebruik van Stored Procs en ADO commands wordt dat dan een aardige hoeveelheid tikwerk Bv:

(even wat '_' toegevoegd voor de layout van dit bericht :))
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
'...
cmdADO.CommandText = "sp_cesys_GetAllCategoriesWithRelatedItemsWCategoryLogic"
cmdADO.CommandType = adCmdStoredProc
    
cmdADO.Parameters.Append cmdADO.CreateParameter("@iParentCategoryID", _
adInteger, adParamInput, 4)
cmdADO.Parameters.Append cmdADO.CreateParameter("@bOnlyUnpublishedItems", _
adBoolean, adParamInput, 1)
cmdADO.Parameters.Append cmdADO.CreateParameter("@iAdminID", _
adInteger, adParamInput, 4)
cmdADO.Parameters.Append cmdADO.CreateParameter("@iErrorCode", _
adInteger, adParamOutput, 4)
    
' fill parameters
cmdADO.Parameters("@iParentCategoryID") = mvariParentCategoryID
cmdADO.Parameters("@bOnlyUnpublishedItems") = bOnlyUnpublishedItems
cmdADO.Parameters("@iAdminID") = mvariAdminID
    
cnADO.CursorLocation = adUseClient
cnADO.Open sConn
cmdADO.ActiveConnection = cnADO
'...

Etc.
Uiteraard kan dit wellicht korter, het idee is duidelijk.

In Visual Studio.NET zit logica om dit leed wat te verzachten: wanneer je een Component Class gebruikt, krijg je een canvas waarop je stored procedures kunt draggen en Visual Studio genereert dan de code voor je, zoals de code hierboven, maar dan voor bv de SqlClient objects.

Dit is allemaal erg leuk, alleen zit je vast aan een Component Class (marshallable object etc). Wil je een plain class gebruiken, dan moet je alles zelf intikken. Dit is onder .NET meer dan met plain ADO. (functies schrijven hiervoor daargelaten).

Mijn vraag is dan ook: zitten er nadelen aan die Component Class of zijn die marginaal? Met nadelen bedoel ik voornamelijk performance nadelen.

Op dit moment genereer ik de C# code voor de command objects via een component class en copy/paste ik de code in mn C# class, maar dat is weer klungelen, alhoewel het al wel wat typewerk scheelt. Iemand al wat meer ervaring hiermee?

Verwijderd

Topicstarter
Niemand? :'(

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op dinsdag 19 maart 2002 18:07 schreef Otis het volgende:
Niemand? :'(
Stel je es een vraag, is ie te moeilijk? :)

[java-denk-mode-enabled]
Kan je niet een enkele (maar algemeen bruikbare) Class maken (plain class, whatever dat heet in C#) die de complete connectie opbouwt en/of beheerd.

En waar je dan alleen nog simpele calls naar doet ala
MyConnection mc = new MyConnection('databasename', ...);

En als er es een stored proc uitgevoerd moet worden:
mc.execStoredProc('procname', params[]);
[/java-denk-mode-enabled]


Anderzijds... Je zou natuurlijk een paar keer een kleine testopstelling kunnen proberen te maken (door bijv een bestaande gewone class met ADO code om te zetten in een die die Component Class gebruikt) en kijken of dat merkbaar slomer is en/of wel/niet doet wat je wilt.

Verder kom ik ook niet, maar misschien laat dit de discussie weer een beetje verder opleven ;)

Verwijderd

Topicstarter
Ja zo (Base class met functie voor paramgeneration en andere db stuff) heb ik het nu maar opgelost en het is uiteindelijk best wel een elegante oplossing geworden. Een Component class is toch wat te lijvig denk ik. (gezien de inheritance tree).

  • tijn
  • Registratie: Februari 2000
  • Laatst online: 09-09 14:37
Had je voor de grap al eens gekeken naar classes in het Data Access Application Block?

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/daab-rm.asp

Zelf maken is natuurlijk leuker, maar toch... :)

Cuyahoga .NET website framework