[VB .NET] N-Tier DataAdapter gebruiken

Pagina: 1
Acties:
  • 518 views sinds 30-01-2008
  • Reageer

  • Redbull4u
  • Registratie: December 2003
  • Laatst online: 23:13
Mensen,
Sinds kort ben ik aan het programmeren in VB .NET en probeer daarbij zo goed mogelijk in een n-tier model te werken.

Hiervoor heb ik een voorbeeld op internet gevonden met de volgende lagen:
interface
Bunsinesslogic
Datalayer
hulpfuncties voor de datalayer t.b.v. database toegang.

Dit was altijd toereikend totdat ik gebruik wou maken van de update mogelijkheiden van een DataAdapter. In de interface laag heb ik een gird die gevuld wordt met een DataSet. Deze wordt bewerkt en hierna wil ik de gegevens wegschrijven naar de database door de DataAdapter.update aan te roepen.

Om de DataSet op te halen wordt de volgende (hulp) functie gebruikt.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Public Shared Function ExecuteDataSet(ByVal sql As String, ByVal params() As SqlParameter) As DataSet

        Try
            Dim ds As New DataSet
            Dim da As New SqlDataAdapter(sql, connectionstring)
            For i As Integer = 0 To params.Length - 1
                da.SelectCommand.Parameters.Add(params(i))
            Next
            da.Fill(ds)
            Return ds

        Catch ex As Exception
            Throw New Exception(ex.Source & ": Dataset fout")
        End Try

    End Function

Het nadeel hier van is (volgens mij) dat ik de DataAdapter van de dataset niet meer kan benaderen.

Ik heb al meerdere manieren geprobeerd om de update uit te voeren.
(nieuwe dataadapter aanmaken met de gewijzigde DataSet)
(gebrobeerd een klasse maken, maar hier kwam ik niet uit)
(enz.)

Maar ze werken niet en ik weet eigenlijk ook niet of ik de juiste manier hanteer.

Wie kan mij vertellen hoe ik op een juiste manier, in het model zoals ik die nu gebruik, een DataAdapter "(hulp)Functie?" kan maken die ik in de andere lagen kan benaderen.

If it does not kill u, it makes u stronger


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 20:02

mulder

ik spuug op het trottoir

Niet. Je moet vanuit je UI laag alleen maar met de Business laag praten. De Business laag op zijn beurt praat alleen met de DataLayer. Anders hebben de layers helemaal geen zin :) Misschien moet je eens naar wat (opensource) O/R mappers kijken hoe die dit oplossen.

oogjes open, snaveltjes dicht


  • joggie
  • Registratie: November 2004
  • Laatst online: 03-02-2025

joggie

Wie niet gek is, is saai

ik denk eigenlijk dat je dit topic beter in SE&A had kunnen posten maargoed:
Redbull4u schreef op donderdag 27 april 2006 @ 14:45:
Mensen,
Sinds kort ben ik aan het programmeren in VB .NET en probeer daarbij zo goed mogelijk in een n-tier model te werken.

Hiervoor heb ik een voorbeeld op internet gevonden met de volgende lagen:
interface
Bunsinesslogic
Datalayer
hulpfuncties voor de datalayer t.b.v. database toegang.
Even een vraag aan jou, als ik dit zo lees namelijk krijg ik het idee dat je denkt dat een multi-tier aplicatie bestaat uit de lagen die je daar opsomd???
Zo ja, dan kun je beter even op google gaan zoeken wat muti-tier precies is....

Joggie ;)


  • Redbull4u
  • Registratie: December 2003
  • Laatst online: 23:13
Don Facundo schreef op donderdag 27 april 2006 @ 14:56:
Niet. Je moet vanuit je UI laag alleen maar met de Business laag praten. De Business laag op zijn beurt praat alleen met de DataLayer. Anders hebben de layers helemaal geen zin :) Misschien moet je eens naar wat (opensource) O/R mappers kijken hoe die dit oplossen.
Sorry ik ben niet helemaal duidelijk in mijn vorige bericht. ik ken de volgorde, en weer dat de ene laag alleen de onderliggende laag aanroept.
Even een vraag aan jou, als ik dit zo lees namelijk krijg ik het idee dat je denkt dat een multi-tier aplicatie bestaat uit de lagen die je daar opsomd???
Zo ja, dan kun je beter even op google gaan zoeken wat muti-tier precies is....
ik begin me net te verdiepen in dit concept en kan me voorstellen dat multi-tier nog veeeel meer is dan alleen de 3 lagen die ik opgesomt heb.

In het kader van mij verdieping wil ik graag weten hoe jullie dit probleem oplossen. Of iig. mij opweg kunnen helpen.

If it does not kill u, it makes u stronger


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 20:02

mulder

ik spuug op het trottoir

Er is geen probleem. Je moet geen DataAdapter gaan gebruiken in je ander lagen.

oogjes open, snaveltjes dicht


  • joggie
  • Registratie: November 2004
  • Laatst online: 03-02-2025

joggie

Wie niet gek is, is saai

Redbull4u schreef op donderdag 27 april 2006 @ 15:25:
ik begin me net te verdiepen in dit concept en kan me voorstellen dat multi-tier nog veeeel meer is dan alleen de 3 lagen die ik opgesomt heb.

In het kader van mij verdieping wil ik graag weten hoe jullie dit probleem oplossen. Of iig. mij opweg kunnen helpen.
multi-tier betekend dat de lagen die je beschrijft, physiek op een andere plek staan!

bijvoorbeeld je hebt op computer 1 je UI laag, op computer 2 je buisness logic en datalayer en op computer 3 staat de daadwerkelijke database.

Dat is multitier.

*edit

Er zijn nog veel meer manieren om een applicatie multi-tier te maken

[ Voor 7% gewijzigd door joggie op 27-04-2006 15:30 ]

Joggie ;)


  • Redbull4u
  • Registratie: December 2003
  • Laatst online: 23:13
joggie schreef op donderdag 27 april 2006 @ 15:29:
[...]

multi-tier betekend dat de lagen die je beschrijft, physiek op een andere plek staan!

bijvoorbeeld je hebt op computer 1 je UI laag, op computer 2 je buisness logic en datalayer en op computer 3 staat de daadwerkelijke database.

Dat is multitier.

*edit

Er zijn nog veel meer manieren om een applicatie multi-tier te maken
Dat kan ik me heel goed voorstellen. Maar dat neemt niet weg dat je hiervoor verschillende lagen (lees projecten/dll's) moet hebben om die scheiding aan te maken.
Er is geen probleem. Je moet geen DataAdapter gaan gebruiken in je ander lagen.
Ok. maar de DataAdapter.update moet wel aangeroepen worden. Kan ik dit dan het beste doen met een methode van een klasse die in de datalayer gedefineerd worden en waarvan een object gemaakt wordt in de businesslogic laag?

If it does not kill u, it makes u stronger


  • joggie
  • Registratie: November 2004
  • Laatst online: 03-02-2025

joggie

Wie niet gek is, is saai

Redbull4u schreef op donderdag 27 april 2006 @ 15:39:
Dat kan ik me heel goed voorstellen. Maar dat neemt niet weg dat je hiervoor verschillende lagen (lees projecten/dll's) moet hebben om die scheiding aan te maken.
Klopt :) als je het netjes doet zeker :)

het gebruik van de lagen die je opsomt betekend alleen nog niet dat je multitier werkt, daarvoor moet je het physiek op een andere plaats zetten ;)

Is dat bij jou ook het geval?

*edit

tip: http://en.wikipedia.org/wiki/Multitier_architecture

[ Voor 8% gewijzigd door joggie op 27-04-2006 15:47 ]

Joggie ;)


  • Redbull4u
  • Registratie: December 2003
  • Laatst online: 23:13
Nee dat (nog) niet. Maar door op deze manier te programmeren heb ik wel de mogelijkheid om dit later te doen.

If it does not kill u, it makes u stronger


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 20:02

mulder

ik spuug op het trottoir

het gebruik van de lagen die je opsomt betekend alleen nog niet dat je multitier werkt, daarvoor moet je het physiek op een andere plaats zetten
Dat is onzin :) Een andere laag zou inprincipe al een andere class kunnen zijn. Heeft niks met 'fysiek' te maken.

oogjes open, snaveltjes dicht


  • joggie
  • Registratie: November 2004
  • Laatst online: 03-02-2025

joggie

Wie niet gek is, is saai

Het gebruik van lagen zegt niet dat je met classes moet werken?

Joggie ;)


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 20:02

mulder

ik spuug op het trottoir

Nee, dat zeg ik niet. Jij zegt dat je elke laag op een andere plaats, andere computer moet plaatsen, ik zeg dat dat niet zo is ;)

oogjes open, snaveltjes dicht


Verwijderd

Don Facundo schreef op donderdag 27 april 2006 @ 18:07:
[...]

Dat is onzin :) Een andere laag zou inprincipe al een andere class kunnen zijn. Heeft niks met 'fysiek' te maken.
Het gaat erom dat je ze op een andere locatie neer zou KUNNEN zetten. Dat is het ultieme bewijs dat je iedere laag van elkaar los kan koppelen en dat de verschillende verantwoordelijheden niet afhankelijk van elkaar zijn.

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 20:02

mulder

ik spuug op het trottoir

Verwijderd schreef op donderdag 27 april 2006 @ 18:28:
[...]


Het gaat erom dat je ze op een andere locatie neer zou KUNNEN zetten. Dat is het ultieme bewijs dat je iedere laag van elkaar los kan koppelen en dat de verschillende verantwoordelijheden niet afhankelijk van elkaar zijn.
Exact. Bij multi-tier betekent dat dus vooral dat clientcode op de client draait, en servercode op de server(s). Dat betekent niet dat de lagen, code, de projecten, dlls, whatever van je VB.Net project zich op verschillende computers moet(zal!) bevinden. Dat klinkt enigzins tegenstrijdig :D, but makes perfect sense! ;)

oogjes open, snaveltjes dicht


  • joggie
  • Registratie: November 2004
  • Laatst online: 03-02-2025

joggie

Wie niet gek is, is saai

ja en clientcode KAN de UI zijn, terwijl de rest dan servercode is (kan zijn) dus waar zit dan het verschil tussen wat jij zegt, en wat ik zeg?

Joggie ;)


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:33
Het is idd niet zo dat een multi-tier app slechts multi-tier is , als de verschillende lagen fysiek gescheiden zijn; het kan, maar het moet niet.

Verder gaat dit wel een beetje offtopic.

TS: waarom wil je die data-adapter gaan benaderen ? Je kan toch perfect in je DAL een nieuwe DataAdapter gaan maken, die de insert/update/delete commands bevat die moeten uitgevoerd worden ?

https://fgheysels.github.io/

Pagina: 1