Is het beter om Model klassen maken of stok met generieke database-programma klas?

stemmen
5

We hebben een eenvoudig nut klasse in huis voor onze database oproepen (een lichte wrapper rond ADO.NET), maar ik denk aan het creëren van klassen voor elke database / object. Zou het slim om te doen, of zou het alleen ten goede komen als we met behulp van de volledige MVC framework voor ASP.NET?

Dus hebben we dit:

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

Het denken om dit te doen:

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

of voor een nieuw record -

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

Zou dit slim zijn, of zou het overkill? Ik kan het voordeel voor hergebruik, het veranderen van de database, en het onderhoud / de leesbaarheid te zien.

De vraag is gesteld op 05/08/2008 om 21:10
bron van user
In andere talen...                            


4 antwoorden

stemmen
8

Deze vraag wordt geladen, data driven design vs domain-driven design. Voor elke toepassing die een goede hoeveelheid gedrag, dan domein driven design de voorkeur verdient. Rapportage, of hulpprogramma's hebben de neiging om beter te werken (of sneller te ontwikkelen) met data driven design.

Wat je vraagt is "zou mijn bedrijf te maken een fundamentele verschuiving in de manier waarop we het ontwerp van onze code". Als een domein-buitenissig, mijn instinctieve reactie is om te schreeuwen ja . Echter, door de eenvoudige aard van uw vraag, ik weet niet of je de omvang van de verandering die u voorstelt volledig te begrijpen. Ik vind dat je meer praten met uw team over.

Get some literatuur, zoals Evan's DDD boek, of de gratis funderingen ebook , en dan zult u in een betere positie om te beoordelen in welke richting je moet gaan.

antwoordde op 05/08/2008 om 21:28
bron van user

stemmen
2

De aanpak bespreek je wordt beschouwd als een goede één voor vele mensen, waaronder ik! Het leren van deze aanpak zal enige inspanning vergen, maar laat dat je niet afschrikken!

Hoe zit het gewoon proberen een klein project met LINQ to SQL ? Misschien is het vinden van een leuke verwijzing project op Google Code , en bestuderen hoe anderen hebben gewerkt.

Het is een eenvoudige tool, en laat u bekend met een aantal van de problemen die komen met het in kaart brengen objecten om databases te worden.

U zult dan in staat zijn om een gevoel voor te krijgen , en beslissen of het is de leercurve waard.

Er zullen nieuwe concepten te begrijpen en te experimenteren met dingen als:

  • Unit of Work : Wanneer u Save uit te voeren en Delete etc, een ORM de neiging om dit niet onmiddellijk te doen, terwijl een record set op basis DAL wil. Dit kan verrassend zijn, zodat je nodig hebt om een beetje te leren over. Lees over de eenheid van het werk patroon tot een goed begrip van dit te krijgen.
  • Bulk Operaties zijn een probleem met OR / M. Een data-lezer kan efficiënt doorlopen duizenden rijen, maar met een ORM je moet voorzichtig zijn bij het werken met grote hoeveelheden objecten. Nogmaals, een om te lezen op.
  • Verenigingen groot lijken wanneer kan dingen doen zoals customer.Orders.Count, maar ze zijn ook de oorzaak van veel problemen. Je moet een aantal veilige praktijken te volgen bij het werken met de verenigingen te vinden.

...om er een paar te noemen.

Om te beginnen, maak je geen zorgen te maken over de erfenis en dat soort dingen, gewoon beginnen eenvoudig en hebben eenvoudige entiteiten die zijn toegewezen aan tafels.

Probeer het gebruik ervan op dezelfde manier waarop je je bestaande DAL zou gebruiken. Dan beginnen te experimenteren met de verenigingen.

Probeer dan misschien ze meer gedrag in uw entiteiten. Als je begint wens dit, en het gevoel dat je meer functies nodig hebt, overweeg dan het uitproberen van een meer feature-rijke ORM zoals Lightspeed of NHibernate .

Ik hoop dat dit helpt!

antwoordde op 03/10/2008 om 11:07
bron van user

stemmen
2

In geen geval is de enige MVC ontwerppatroon voor de baan, maar is een handig is.

De goedkeuring van alleen de 'M' zal dividenden uit te betalen, naar mijn mening, zelfs als je niet kan / zal niet de 'V' of 'C' vast te stellen.

antwoordde op 05/08/2008 om 21:13
bron van user

stemmen
0

Voor mij lijkt het alsof je probeert te doen wat LINQ al voor u kan doen. Als je vast zit in een ouder kader waarin je kan gebruiken, zou ik voor dat u Subconic (gebruik http://subsonicproject.com/ ) in plaats van het hebben van al deze model objecten met de hand handmatig maken.

Ik had een project waar ik was in een soortgelijke situatie en veranderde subsonische halverwege met een fantastisch resultaat. Snellere ontwikkeling en veel gemakkelijker om te lezen / gebruik code.

antwoordde op 26/09/2008 om 15:41
bron van user

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