Vra

Ek gebruik tans 'n DataTable om resultate te kry uit 'n databasis wat ek kan gebruik in my kode.

Daar is egter baie voorbeeld op die web show met behulp van 'n datastel in plaas en toegang tot die tafel (s) deur die versamelings metode.

Is daar enige voordeel, prestasie wys of andersins, van die gebruik van datastelle of DataTables as 'n manier van bewaring vir SQL resultate?

Was dit nuttig?

Oplossing

Dit hang af van die soort van data wat jy terug te bring. Sedert 'n datastel is (in effek) net 'n versameling van DataTable voorwerpe, kan jy verskeie afsonderlike stelle data terug te trek na 'n enkele, en dus meer hanteerbaar, voorwerp.

Performance-wys, is jy meer geneig om ondoeltreffendheid te kry van Ongeoptimaliseerde navrae as van die "verkeerde" keuse van NET konstruk. Ten minste, dit was my ervaring.

Ander wenke

Een groot verskil is dat datastelle verskeie tafels kan hou en jy kan verhoudings tussen die tafels te definieer.

As jy net 'n enkele resultaat stel alhoewel ek sou dink 'n DataTable sou meer geoptimaliseer terugkeer. Ek sou dink daar moet 'n paar oorhoofse (klein toegestaan) om die funksies 'n datastel doen bied en hou van veelvuldige DataTables.

in 1.x gebruik daar om dinge DataTables kon nie doen wat datastelle kan (kan nie onthou presies wat) wees. Al wat verander het in 2.x My raaiskoot is dat is hoekom baie voorbeelde nog datastelle gebruik. DataTables moet vinniger wees as hulle meer lig. As jy net trek 'n enkele resultset, sy sal jou beste keuse tussen die twee.

Een kenmerk van die datastel is dat as jy verskeie uitgesoekte state kan noem in jou gestoor prosedures, sal die dataset een DataTable het vir elke.

Daar is 'n paar optimalisaties wat jy kan gebruik wanneer vulling van 'n DataTable, soos 'n beroep BeginLoadData (), die inbring van die data, dan roep EndLoadData (). Dit blyk uit 'n interne gedrag binne die DataTable, soos indeks onderhoud, ens Sien hierdie artikel vir verdere besonderhede.

As jy net te doen het met 'n enkele tafel in elk geval, die grootste praktiese verskil ek gevind het is dat dataset het 'n "HasChanges" metode, maar DataTable nie. Beide het 'n "GetChanges" egter so jy kan gebruik wat en toets for null.

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