Vra

Ek is 'n ervare programmeerder in 'n nalatenskap (maar objekgeoriënteerde) ontwikkelingsinstrument en maak die oorskakeling na C#/.Net.Ek skryf 'n klein enkelgebruiker-toepassing wat SQL-bediener CE 3.5 gebruik.Ek het die konseptuele datastel en verwante dokument gelees en my kode werk.

Nou wil ek seker maak ek doen dit "reg", kry terugvoer van ervare .Net/SQL Server-kodeerders, die soort wat jy nie kry as jy die dokument lees nie.

Ek het opgemerk dat ek kode soos hierdie op 'n paar plekke het:

var myTableDataTable = new MyDataSet.MyTableDataTable();
myTableTableAdapter.Fill(MyTableDataTable);

... // other code

In 'n enkele gebruiker-toepassing, sal jy dit gewoonlik net een keer doen wanneer die toepassing begin, 'n DataTable-objek vir elke tabel instansieer en dan 'n verwysing daarna stoor sodat jy ooit net daardie enkele voorwerp gebruik wat reeds met data gevul is?Op hierdie manier sal jy die data van die db ooit net een keer lees in plaas van moontlik verskeie kere.Of is die bokoste hiervan so klein dat dit net nie saak maak nie (en kan teenproduktief wees met groot tafels)?

Was dit nuttig?

Oplossing

Vir CE, is dit waarskynlik 'n nie-uitgawe. As jy hierdie inligting is stoot om duisende gebruikers en hulle is almal tref 'n gesentraliseerde databasis, wil jy dalk om 'n geruime tyd te spandeer op die optimalisering. In 'n enkel-gebruiker byvoorbeeld DB soos CE, tensy jy het data wat sê jy nodig het om te optimaliseer, sou ek nie 'n tyd om bekommerd te wees oor dit. Voortydige optimalisering, ens.

Ander wenke

Die manier om te besluit wissel tussen 2 belangrikste dinge 1.Gaan die data voortdurend toegang hê 2.Is daar baie data

As jy voortdurend die data in die tabelle gebruik, laai dit dan met die eerste gebruik.As jy die data net af en toe gebruik, vul die tabel wanneer jy dit nodig het en gooi dit dan weg.

Byvoorbeeld, as jy 10 gui-skerms het en net myTableDataTable op 1 van hulle gebruik, lees dit net op daardie skerm in.

Die keuse regtig nie afhang van C # self. Dit kom neer op 'n balans te vind tussen:

  1. Hoe dikwels doen jy die data in jou kode te gebruik?
  2. Maak die data ooit verander (en doen jy omgee as dit nie)?
  3. Wat is die relatiewe (tyd) koste van weer om die data, in vergelyking met al die ander jou kode nie?
  4. Hoeveel waarde sit jy op prestasie , teenoor ontwikkelaar moeite / tyd (vir hierdie spesifieke toepassing)?

As 'n algemene reël, want produksie aansoeke, waar die data nie dikwels verander, sou ek waarskynlik die DataTable keer skep en dan vashou die verwysing as jy praat. Ek sou ook oorweeg om die data in 'n getikte versameling / lys / woordeboek, in plaas van die generiese DataTable klas, indien niks anders nie, want dit is makliker om te laat die samesteller vang my tik foute.

Vir 'n eenvoudige nut jy hardloop vir jouself wat "begin, doen sy ding en eindig", is dit waarskynlik nie die moeite werd.

Jy vra oor Windows CE. In daardie spesifieke sorg, sou ek waarskynlik nie die navraag slegs een keer en hou op die resultate. Mobile bedryfstelsels het ekstra beperkinge in batterye en ruimte wat desktop sagteware het nie. Basies, 'n mobiele bedryfstelsel maak koeël # 4 veel belangriker.

Every jy 'n ander herwinning oproep van SQL te voeg, jy oproepe na eksterne biblioteke maak meer dikwels, wat beteken dat jy waarskynlik langer loop, die toekenning en meer geheue meer dikwels vrystelling (wat fragmentasie voeg), en moontlik veroorsaak dat die databasis weer word -read van Flash geheue. dit is waarskynlik 'n baie beter om te hou op die data wanneer jy dit het, in die veronderstelling dat jy kan (sien bullet # 2).

Dit is makliker om uit te vind die antwoord op hierdie vraag wanneer jy dink oor datastelle as 'n "sessie" van data. Jy vul die datastelle; jy werk met hulle saam; en dan terug te sit jy die data of weggooi dit wanneer jy klaar is. So wat jy nodig het om vrae soos hierdie te vra:

  1. Hoe huidige beteken die data moet wees? Het jy altyd nodig om die heel nuutste hê, of sal die databasis nie gereeld verander dit?
  2. Wat doen jy met behulp van die data vir? As jy net gebruik dit vir verslae, dan kan jy maklik 'n datastel te vul, hardloop jou verslag, dan gooi die dataset weg, en volgende keer net maak 'n nuwe een. Wat sal jy meer huidige data in elk geval gee.
  3. Slegs hoeveel data praat ons? Jy het gesê jy werk met 'n relatief klein dataset, so daar is nie 'n groot geheue impak as jy dit alles te laai in die geheue en hou dit daar vir ewig.

Omdat jy sê dit is 'n enkel-gebruiker app sonder 'n baie data, ek dink jy veilig laai alles in is aan die begin, gebruik dit in jou datastelle, en dan die opdatering op naby.

Die belangrikste ding wat jy nodig het om bekommerd te wees in hierdie scenario is: Wat gebeur as die app uitgange abnormaal, te danke aan 'n ongeluk, kragonderbreking, ens? Sal die gebruiker sy werk verloor al? Maar as dit gebeur, datastelle is baie maklik om te afleveringen, sodat jy kan redelik maklik te implementeer 'n "red elke so dikwels" prosedure om die inhoud dataset afleveringen op skyf sodat die gebruiker 'n baie werk nie sal verloor nie.

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