Vra

Ons het 'n eenvoudige nut klas in-huis vir ons databasis oproepe ( 'n ligte omhulsel rondom ADO.NET), maar ek dink aan die skep van klasse vir elke databasis / voorwerp. Sou dit wees slim ding om dit te doen, of sal dit tot voordeel van net as ons met behulp van die volle MVC raamwerk vir ASP.NET?

Ons het dus die volgende:

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

Ek dink aan dit te doen:

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

of vir 'n nuwe rekord -

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

Sou dit wees slim, of sou dit wees overkill? Ek kan die voordeel vir hergebruik, die verandering van databasis en instandhouding / leesbaarheid te sien.

Was dit nuttig?

Oplossing

Hierdie vraag is gelaai, data-gedrewe ontwerp vs domein gedrewe ontwerp. Vir enige aansoek wat 'n goeie bedrag van gedrag het, dan domein gedrewe ontwerp moet verkies word. Verslagdoening, of nut aansoeke is geneig om beter te werk (of is vinniger te ontwikkel) met data-gedrewe ontwerp.

Wat jy vra is "moet my maatskappy maak 'n fundamentele verskuiwing in die manier waarop ons ontwerp ons kode". As 'n domein-freak, my ingewande reaksie is om te skree Ja . Maar deur die eenvoudige aard van jou vraag, ek is nie seker wat jy die omvang van die verandering wat jy stel ten volle verstaan. Ek dink jy moet meer praat met jou span daaroor.

Kry 'n paar literatuur, soos Evan se DDD boek, of die gratis fondamente ebook , en dan is jy "sal in 'n beter posisie om te oordeel watter rigting jy moet gaan.

Ander wenke

Deur geensins is MVC die enigste ontwerp patroon vir die web, maar dit is 'n nuttige een.

Die aanvaarding van net die "M" sal betaal dividende, in my opinie, selfs al is jy kan nie / sal nie die "V" of "C".

aanneem

Die benadering wat jy bespreek word beskou as 'n goeie een vir baie mense, my ingesluit! Leer hierdie benadering sal 'n bietjie moeite verg, maar moenie toelaat dat dit jou afsit nie!

Wat van net probeer om 'n klein projek met LINQ na SQL ? Miskien vind 'n mooi verwysing projek op Google-kode , en bestudeer hoe ander gewerk het met dit.

Dit is 'n eenvoudige instrument, en sal laat jy vertroud is met 'n paar van die kwessies wat kom met kartering voorwerpe om databasisse te word.

Jy sal dan in staat wees om kry 'n gevoel vir dit , en besluit of dit die moeite werd om leerkurwe.

Daar sal nuwe konsepte te begryp en eksperimenteer met dinge soos:

  • Eenheid van die werk : Wanneer jy Save voer en verwyder ens, 'n ORM is geneig om nie hierdie onmiddellik doen, terwyl 'n rekordstel gebaseer DAL wil. Dit kan vreemd wees sodat jy nodig het om 'n bietjie te leer oor dit. Lees meer oor die Eenheid van die werk patroon om 'n begrip van hierdie kry.
  • grootmaat Bedryf is 'n probleem met OR / M. A data leser kan doeltreffend Itereer deur duisende rye, maar met 'n ORM jy moet versigtig wees wanneer daar met groot groepe van voorwerpe. Weereens, een om te lees op.
  • Verenigings lyk groot toe kan dinge doen soos customer.Orders.Count maar hulle is ook die oorsaak van baie probleme. Jy moet 'n paar veilige praktyke te volg wanneer daar met verenigings te vind.

... om 'n paar te noem.

Om mee te begin, moenie bekommerd wees oor erfenis en dinge, net begin eenvoudig en het eenvoudig entiteite wat karteer om tafels.

Probeer die gebruik van hulle in dieselfde manier waarop jy jou bestaande DAL wil gebruik. Dan begin eksperimenteer met verenigings.

Toe miskien probeer om meer gedrag in jou entiteite. As jy begin hou hierdie, en voel dat jy meer funksies nodig het, oorweeg probeer uit 'n meer funksie ryk ORM soos Lightspeed of NHibernate .

Hoop dit help!

Vir my lyk dit soos jy probeer om te doen wat LINQ reeds vir jou kan doen. As jy vas in 'n ouer raamwerk waarin jy kan nie gebruik dat, sou ek voorstel dat jy Subconic ( http gebruik: // subsonicproject. com / ) in plaas van om al hierdie model voorwerpe met die hand te skep met die hand.

Ek het 'n projek waar ek was in 'n soortgelyke penarie en verander om subsoniese halfpad deur met fantastiese resultate. Vinniger ontwikkeling en baie makliker om te lees / gebruik kode.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top