Vra

Ek het myself gevind toenemend ontevrede met die DataSet/DataTable/DataRow paradigma in .Netto, meestal, want dit is dikwels'n paar van die stappe meer ingewikkeld as wat ek regtig wil om dit te doen.In gevalle waar ek is bindend te beheer, Datastelle is fyn.Maar in ander gevalle, daar blyk te wees'n billike bedrag van die geestelike oorhoofse.

Ek het'n bietjie met SqlDataReader, en wat blyk te wees goed vir eenvoudige jaunts deur middel van'n kies, maar ek voel soos daar kan'n paar ander modelle loer in .Net wat is nuttig om meer te leer oor.Ek voel soos al die hulp nodig wat ek op die net gebruik DataSet by verstek.Miskien is dit en DataReader is regtig die beste opsies.

Ek is nie op soek na'n beste/slegste uiteensetting, net nuuskierig wat my opsies is en wat ervaringe wat jy gehad het met hulle.Dankie!

-Eric Sipple

Was dit nuttig?

Oplossing

Sedert NET 3.5 uitgekom, ek het uitsluitlik LINQ. Dit is regtig so goed is; Ek sien geen rede om enige van dié ou krukke nie meer gebruik sien.

As 'n groot as LINQ is, al is, ek dink enige ORM stelsel sal toelaat dat jy om weg te doen met wat dreck.

Ander wenke

Ons het weg van datastelle verskuif en die gebou ons eie ORM voorwerpe losweg gebaseer op CSLA . Jy kan dieselfde werk gedoen met óf 'n datastel of LINQ of ORM maar hergebruik dit kry (ons het gevind) 'n baie makliker. 'Minder kode maak meer gelukkig.

Ek is keelvol vir datastelle in Net 1,1, ten minste new hulle dit so dat dit nie as eksponensieel afneem vir 'n groot stelle meer.

Dit was altyd 'n eerder opgeblase model - ek het nie baie apps wat die meeste van sy funksies te gebruik gesien

.

SqlDataReader was goed, maar ek gebruik om dit toe te draai in 'n IEnumerable<T> waar die T was 'n paar getikte weergawe van wie Ek data ry.

Linq is 'n baie beter plaasvervanger in my opinie.

Ek het al met behulp van die Data-Oordrag Voorwerpe patroon (oorspronklik van die Java wêreld, glo ek), met'n SqDataReader te vul versamelings van DTOs van die data laag vir gebruik in ander lae van die aansoek.Die DTOs self is baie liggewig en eenvoudige klasse bestaan van eiendomme met kry/stelle.Hulle kan maklik serialized/deserialized, en wat gebruik word vir databinding, maak hulle baie goed geskik vir die meeste van my ontwikkeling behoeftes.

Ek is'n groot fan van Subsoniese.'n goed-geskrewe joernaal/CMD lêer kan genereer'n hele voorwerp model vir jou databasis in'n paar minute;jy kan stel dit in sy eie DLL en dit gebruik as dit nodig is.Wonderlike model, wonderlike hulpmiddel.Die webwerf maak dit klink soos'n ASP.NET gaan nie, maar oor die algemeen is dit werk wonderlik net oor enige plek as jy nie probeer om te gebruik om sy UI raamwerk (wat ek is redelik teleurgesteld in) of sy aansoek-vlak auto-generasie gereedskap.

Vir die rekord, hier is'n weergawe van die opdrag wat ek gebruik om te werk met dit (so dat jy nie het om te veg dit ook moeilik om aanvanklik):

sonic.exe generate /server [servername] /db [dbname] /out [outputPathForCSfiles] /generatedNamespace [myNamespace] /useSPs true /removeUnderscores true

Wat beteken dit elke keer ...Dan bou die DLL af dat directory-dit is deel van'n NAnt projek, afgedank af deur CruiseControl.NET -en die weg wat ons gaan.Ek is die gebruik dat in WinForms, ASP.NET, selfs'n paar command-line utils.Dit genereer die minste afhanklikhede en die grootste "port" (tussen verwante projekte, BV.).

Nota

Die bogenoemde is nou wel oor'n jaar oud.Terwyl ek nog steeds groot liefde in my hart vir Subsoniese, ek het verhuis op te LINQ-om-te-SQL wanneer ek het die luukse van die werk in .NETTO 3.5.In .NET 2.0, het ek nog steeds gebruik Subsoniese.So my nuwe amptelike raad is platform weergawe-afhanklik.In die geval van .NETTO 3+, gaan met die aanvaarde antwoord.In die geval van .NET 2.0, gaan met Subsoniese.

datastelle is ideaal vir demos.

Ek sou nie weet wat om te doen met een as jy vir my gemaak het dit gebruik.

Ek gebruik ObservableCollection

Dan weer ek is in die kliënt app ruimte, WPF en Silver. So verby 'n dataset of datatable deur 'n diens is ... bruto.

DataReaders is vinnig, want hulle is 'n vorentoe net stroom van die resultaat stel.

Ek gebruik getik en untyped datastelle, DataViewManagers, DataViews, DataTables, DataRows, DataRowViews, en net oor enige iets wat jy kan doen met die stapel aangesien dit eerstes kom uit in verskeie onderneming projekte. Dit het my 'n rukkie gewoond raak aan hoe laat dit gewerk om te kry. Ek het persoonlike items wat die stapel hefboom as ADO.NETdid nie heeltemal my gee wat ek regtig nodig geskryf. Een so 'n komponent vergelyk datastelle en dan updates backend winkels. Ek het regtig weet hoe al hierdie items goed werk en diegene wat gesien het wat ek gedoen het is baie beïndruk dat ek daarin geslaag om verby daar voel dat dit net nuttig vir demo gebruik.

Ek gebruik ADO.NET bindend in Winforms en ek ook die kode te gebruik in konsole programme. Ek mees onlangs het saamgespan met 'n ander ontwikkelaar om 'n persoonlike ORM wat ons gebruik teen 'n mal datamodel wat ons gekry het van kontrakteurs wat niks meer as ons normale data winkels gekyk skep.

Ek het vandag gesoek vir vervanging op ADO.NET en ek sien nie iets wat ek ernstig moet probeer om te leer om te vervang wat ek op die oomblik gebruik.

Ek gebruik dit op groot skaal maar nie gebruik van enige van die "gevorderde" eienskappe wat Microsoft werklik is besig om toe die raamwerk eerste uitgekom maak. Ek is basies net die gebruik van hulle as Lyste van Hashtables, wat ek vind perfek bruikbare.

Ek het nie goeie resultate gesien wanneer mense probeer om komplekse getik datastelle, of probeer om werklik die opstel van die vreemde sleutel verhoudings tussen tafels met datastelle.

Natuurlik, ek is een van die vreemde mense wat eintlik 'n DataRow verkies om 'n entiteit voorwerp byvoorbeeld.

Pre linQ Ek gebruik DataReader lys van my eie persoonlike domein voorwerpe te vul, maar post linQ Ek het al met behulp van L2S om L2S entiteite te vul, of L2S domein voorwerpe te vul.

As ek 'n bietjie meer tyd om te ondersoek ek vermoed dat Entiteit Raamwerk voorwerpe my nuwe gunsteling oplossing sal wees!

Die keuse van 'n moderne, stabiele, en aktief ondersteun ORM instrument moet waarskynlik die grootste enkele hupstoot te produktiwiteit net oor 'n projek van 'n matige grootte en kompleksiteit kan kry. As jy die slotsom gekom dat jy absoluut, absoluut, absoluut moet jou eie DAL en ORM skryf, is jy waarskynlik doen dit verkeerd (of jy die wêreld se mees obskure databasis).

As jy doen rou datastelle en rye en wat nie, spandeer die dag by 'n ORM probeer en jy sal verbaas wees oor hoeveel meer produktief kan jy wees w / o al die sleurwerk van kartering kolomme te velde of al die tyd te vul Sql opdrag voorwerpe en al die ander hoepel spring ons almal een keer deurgegaan.

Ek is lief vir my 'n paar Subsonic, maar vir kleiner skaal projekte saam met demos / prototipes, ek Linq te vind om Sql pretty damn nuttig. Ek haat EF met 'n passie though. : P

Ek het getik datastelle wat gebruik word vir verskeie projekte. Hulle model die databasis goed, af te dwing beperkings op die kliënt kant, en in die algemeen is 'n soliede toegang data tegnologie, veral met die veranderinge in NET 2.0 met TableAdapters.

Getik datastelle kry 'n slegte rap van mense wat daarvan hou om emosionele woorde soos "opgeblase" gebruik om hulle te beskryf. Ek sal gee dat ek graag met behulp van 'n goeie O / R kartograaf meer as die gebruik van datastelle; dit net "voel" beter om voorwerpe en versamelings in plaas van getikte DataTables, DataRows, ens gebruik maar wat ek gevind het is dat as een of ander rede wat jy nie kan of wil nie 'n O / R Mapper te gebruik, getik datastelle is 'n goeie vaste keuse wat maklik genoeg is om te gebruik en sal jy 90% van die voordele van 'n O / R kartograaf kry.

Edit:

Sommige hier dui daarop dat DataReaders is die "vinnige" alternatiewe. Maar as jy Reflector gebruik om te kyk na die werking van 'n DataAdapter (wat DataTables gevul deur), sal jy sien dat dit gebruik ... 'n DataReader. Getikte datastelle kan het 'n groter geheue voetspoor as ander opsies, maar ek het nog nie die aansoek sien waar dit maak 'n tasbare verskil.

Gebruik die beste hulpmiddel vir die werk. Moenie jou besluit nie op grond van emosionele woorde soos "bruto" of "opgeblase" wat geen feitelike grondslag het.

Ek het net bou my besigheid voorwerpe van nuuts af, en byna nooit gebruik die DataTable en veral nie die dataset nie, behalwe om aanvanklik vul die besigheid voorwerpe. Die voordele vir die bou van jou eie is toetsbaarheid, tipe veiligheid en IntelliSense, rekbaarheid (probeer toe te voeg tot 'n dataset) en leesbaarheid (tensy jy geniet die lees van dinge soos Convert.ToDecimal (dt.Rows [i] [ "blah"]. ToString () )).

As ek slimmer was ek ook 'n ORM en 3rd party DI raamwerk gebruik, maar net nog nie gevoel het die behoefte aan dié. Ek is besig met baie van die kleiner grootte projekte of toevoegings tot groter projekte.

Ek Moet nooit datastelle. Hulle is groot swaargewig voorwerpe net bruikbaar (as iemand daarop gewys hier) vir "Demo Werklike". Daar is baie se van groot alternatiewe wat hier gewys word.

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