Avatar billede hacked Nybegynder
25. oktober 2006 - 02:14 Der er 9 kommentarer og
1 løsning

Database Mapping Generelt

Hello :)

1. Er der fordele ved, at anvende NHibernate fremfor DataSet/Typed DataSet?

2. Er DataTable performance-mæssigt bedre at benytte end DataSet?

3. Hvad ville du selv vælge? DataSet/Typed DataSet, NHibernate eller DataReader og derigennem udvikle dit eget persistensframework?

PS. Hvis der er nogle der har prøvet LINQ's seneste CTP er det så værd at kigge nærmere på eller er der for mange løse ender?
Avatar billede arne_v Ekspert
25. oktober 2006 - 02:23 #1
re 1)

DataSet bygger på en relationel model

O/R mappere inkl. NHibernate bygger på en objektorienteret model

Så jeg vil sige at der er en markant forskel.

re 2)

Jeg forstår ikke spørgsmålet. Et DataSet består af en eller flere DataTable ikke ?

re 3)

Mine præferancer:
1) type safe collections af data klasse læst med DataReader
2) O/R mapper helst NHibernate
3) typed DataSet
Avatar billede hacked Nybegynder
25. oktober 2006 - 02:50 #2
arne_v:

2. Jo, men jeg mener kun selve DataTable uden, at DataSet er loaded. Det kan man da godt eller er det mig der er træt? Såvidt jeg har forstået skulle DataSet give en masse overhead.

Et eksempel på det jeg mener:

private DataTable GetDataTable()
{
  string sql = "SELECT Id FROM MyTable";
  using (SqlConnection myConnection = new SqlConnection(connectionString))
  {
    using (SqlCommand myCommand = new SqlCommand(sql, myConnection))
    {
      myConnection.Open();
      using (SqlDataReader myReader = myCommand.ExecuteReader())
      {
        DataTable myTable = new DataTable();
        myTable.Load(myReader);
        myConnection.Close();
        return myTable;
      }
    }
  }
}

Oprettes der implicit et DataSet?
Avatar billede arne_v Ekspert
25. oktober 2006 - 02:57 #3
det gør der sikkert ikke

jeg har aldrig overvejet konstruktionen

hvad skulle fordelen være ved det fremfor et DataSet ?
Avatar billede hacked Nybegynder
25. oktober 2006 - 03:25 #4
jaaa... nok ikke andet end hvad man går glip af på tegningen + lidt ekstra.
http://dotnet.developpez.com/tutoriels/ado2/vbnet/images/DataSet.jpg

Jeg har søgt efter noget med dataset vs datatable (performance) ect. men har ikke rigtigt fundet noget på nettet. Fandt blot nogle der pointerede at de brugte DataTable fremfor DataSet på grund af performance. De gav dog ikke konkrete eksempler.
Kommer nok meget an på hvilke metoder/objekter man benytter ( fx. load/fill eller DataReader/DataAdapter ect.)
Det må nok komme an på en prøve senere idag.
Avatar billede arne_v Ekspert
25. oktober 2006 - 04:07 #5
hvis data mængder er af en vis størrelse så bør det extra i et DataSet være
meget lidt overhead

under alle normale omstændigheder bør performance afhænge af hvor meget data der
skal hentes op fra databasen (og SQL og tabel struktur) og meget lidt af hvordan
data struktuereres i memory (*)

det må primært være et spørgsmål om hvad an synes giver et pænt design

*) undtagelsen er O/R mappere som i nogen tilfælde godt kan generere udnødvendige
SQK kald og dermed performe dårligt
Avatar billede hacked Nybegynder
28. oktober 2006 - 02:25 #6
Tror jeg prøver NHibernate. Tak for brugbar respons. Læg et svar og de velfortjente point er dine :)
Avatar billede arne_v Ekspert
28. oktober 2006 - 03:00 #7
ok
Avatar billede arne_v Ekspert
28. oktober 2006 - 03:01 #8
med hensyn til *Hibernate kan jeg varmt anbefale at slå udskrivning af brugt SQL
til og checke at den ikke laver nogle overflødige SQL sætninger
Avatar billede hacked Nybegynder
28. oktober 2006 - 04:17 #9
Hermed taget til efterretning.
Avatar billede arne_v Ekspert
28. oktober 2006 - 04:25 #10
jeg har haft et par uheldige oplevelser med (stumpt j)Hibernate

det er mest hvis man går DB struktur -> objekt model

Hibernate foretrækker klart objekt model -> DB struktur
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester