Er det bedre å lage modell klasser eller stokk med generisk database verktøyet klasse?

stemmer
5

Vi har et enkelt verktøy klasse i huset for våre databasekall (en lys wrapper rundt ADO.NET), men jeg tenker på å lage klasser for hver database / objekt. Ville det være smart ting å gjøre det, eller ville det bare være til nytte hvis vi bruker hele MVC rammeverk for ASP.NET?

Så har vi dette:

SQLWrapper.GetRecordset(connstr-alias, sql-statement, parameters);
SQLWrapper.GetDataset(connstr-alias, sql-statement, parameters);
SQLWrapper.Execute(connstr-alias, sql-statement, parameters);

Tenker på å gjøre dette:

Person p = Person.get(id);
p.fname = jon;
p.lname = smith;
p.Save();

eller for en ny rekord -

Person p = new Person();
p.fname = Jon;
p.lname = Smith;
p.Save();
p.Delete();

Vil dette være smart, eller ville det være overkill? Jeg kan se fordelen for gjenbruk, endre database, og vedlikehold / lesbarhet.

Publisert på 05/08/2008 klokken 20:10
kilden bruker
På andre språk...                            


4 svar

stemmer
8

Dette spørsmålet er lastet, datadrevet konstruksjon kontra domene drevet design. For et hvilket som helst program som har en god mengde av oppførsel, så domene drevet utforming bør foretrekkes. Rapportering, eller verktøyprogrammer har en tendens til å fungere bedre (eller er raskere å utvikle) med data drevet design.

Det du spør er "skal selskapet foreta en grunnleggende endring i hvordan vi utformer vår kode". Som et domene-freak, er min gut reaksjon å skrike ja . Men ved enkle natur på spørsmålet ditt, jeg er ikke sikker på at du fullt ut forstår omfanget av endringen du foreslår. Jeg tror du bør snakke mer til laget ditt om det.

Få litt litteratur, slik som Evans DDD bok, eller gratis fundamenter eBok , og da vil du være i en bedre posisjon til å bedømme hvilken retning du bør gå.

Svarte 05/08/2008 kl. 20:28
kilden bruker

stemmer
2

Tilnærmingen du diskutere er ansett som en god en av mange folk, meg inkludert! Læring denne tilnærmingen vil kreve litt innsats, men ikke la det sette deg av!

Hva med bare å prøve et lite prosjekt med LINQ til SQL ? Kanskje finne et fint referanseprosjektGoogle Code , og studere hvordan andre har jobbet med det.

Det er et enkelt verktøy, og vil la deg bli kjent med noen av de sakene som kommer opp med kartlegging gjenstander til databaser.

Du vil da kunne få en følelse for det , og avgjøre om det er verdt læringskurve.

Det vil bli nye konsepter for å forstå og eksperimentere med, ting som:

  • Arbeidsenhet : Når du utfører Lagre og Slett etc, en ORM en tendens til å ikke gjøre dette umiddelbart, mens en postbasert DAL vilje. Dette kan være overraskende, så du trenger for å lære litt om det. Les opp på Unit of Work mønster for å få en forståelse av dette.
  • Masseoperasjoner er et problem med OR / M. En data leseren kan effektivt iterere gjennom tusenvis av rader, men med en ORM du må være forsiktig når du arbeider med store grupper av stedene. Igjen, en å lese opp på.
  • Foreninger virke stor når kan gjøre ting som customer.Orders.Count, men de er også årsaken til mange problemer. Du må finne noen sikker praksis å følge når du arbeider med assosiasjoner.

...for å nevne noen.

For det første, ikke bry deg om arv og sånt, bare begynne enkle og har enkle enheter som tilordnes til bord.

Prøv å bruke dem på samme måte som du bruker din eksisterende DAL. Deretter begynne å eksperimentere med assosiasjoner.

Så kanskje prøve å sette mer oppførsel i dine enheter. Hvis du begynner å like dette, og føler at du trenger flere funksjoner, bør du vurdere å prøve ut en mer funksjonsrik ORM som Lightspeed eller NHibernate .

Håper dette hjelper!

Svarte 03/10/2008 kl. 10:07
kilden bruker

stemmer
2

På ingen måte er MVC den eneste design mønster for web, men det er en nyttig en.

Vedta bare 'M' vil betale utbytte, etter min mening, selv om du ikke kan / vil ikke vedta 'V' eller 'C'.

Svarte 05/08/2008 kl. 20:13
kilden bruker

stemmer
0

For meg ser det ut som du prøver å gjøre det LINQ kan allerede gjør for deg. Hvis du står fast i en eldre ramme der du ikke kan bruke det, kan jeg foreslå at du bruker Subconic ( http://subsonicproject.com/ ) i stedet for å måtte lage alle disse modellobjekter for hånd manuelt.

Jeg hadde et prosjekt hvor jeg var i en lignende situasjon og endret til Subsonic halvveis gjennom med fantastiske resultater. Raskere utvikling og mye lettere å lese / kode.

Svarte 26/09/2008 kl. 14:41
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more