Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[C#][Database] Goede programmastructuur

Pagina: 1
Acties:

  • Carharttguy
  • Registratie: Juli 2010
  • Laatst online: 04-07 23:09
Hallo iedereen,

Ik heb een vraagje in verband met goede structuur in een programma dat gemaakt moet worden in schoolverband.

Het is een project waarbij standaard CRUD operaties worden gedaan. Een gebruiker heeft een portefeuille en kan daar items toevoegen, vermeerderen, verminderen, verwijderen enzovoort.

We werken met LINQ in .Net, dus die maakt al onze klasses al vanuit de databank. We hebben bijvoorbeeld een Wallet klasse, waaraan we via partial class functies aan toevoegen. We willen bijvoorbeeld:

Wallet.addItem(Item anItem)
Wallet.removeItem(Item anItem)

Geen wereldschokkende dingen, maar, als het item gechecked is, de hoeveelheid gecontroleerd is enzovoort. Moet deze aanpassing in de databank gedaan worden. Nu zijn er volgens ons maar een paar manieren om zoiets te doen.

Een databankklasse, die met singleton 1 toegangspunt heeft, zo hebben we het gezien in de lessen.
Maar die databankklasse heeft geen enkel idee wat een wallet of een item is, dus zouden we ID's moeten meegeven, en dat is zo procedureel geprogrammeerd, bijvoorbeeld zo in de databankklasse:

addItemToWallet(int WalletID, int ItemID){} -> die zou dan worden aangeroepen vanuit Wallet.addItem()

Maar dat lijkt ons dus echt niet gewenst, gewoon omdat dit helemaal geen OOP is, een gigantische databankklasse met enkele duizenden regels die procedurele functies bevat.

Een 2de optie is om de LINQ databankcode onmiddelijk in onze Wallet class te plaatsen, dus in de Wallet.addItem(), maar dan zitten we met het probleem van "separation of concerns", dus dat is ook niet goed.

Heeft iemand een best-practice om dat op te lossen, want zo'n gelijkaardig probleem zal waarschijnlijk toch wel iedereen die al ooit met een databank gewerkt heeft tegengekomen zijn?

Dank

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Ik zou eens kijken naar het UnitOfWork en Repository pattern. Dat is prima te gebruiken i.c.m. Linq2SQL

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • ZaPPZion
  • Registratie: Februari 2009
  • Laatst online: 28-08 12:46
Misschien ook eens kijken naar het 'entity framework' wat tegenwoordig allerlei dingen die je opnoemt al uit zich zelf 'automagisch' oplost :). Met het EF kun je simpele klasses uit de database ophalen, maar ook als je de waarde van deze klasses aanpast in memory, kun je deze weer laten saven naar de database. Er is heel veel informatie over het framework te vinden op de microsoft site :)

  • HMS
  • Registratie: Januari 2004
  • Laatst online: 17-11 00:33

HMS

Woy schreef op donderdag 28 februari 2013 @ 14:07:
Ik zou eens kijken naar het UnitOfWork en Repository pattern. Dat is prima te gebruiken i.c.m. Linq2SQL
Ah de nieuwe Singleton :7.

http://ayende.com/blog/3955/repository-is-the-new-singleton
http://codebetter.com/gre...d-the-generic-repository/
http://www.planetgeek.ch/...-repository-anti-pattern/

Voor de nuance :)

  • Carharttguy
  • Registratie: Juli 2010
  • Laatst online: 04-07 23:09
Dankuwel iedereen, weer wat leesvoer aanwezig!
Al die patterns, soms niet altijd even makkelijk!
Pagina: 1