Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202

    [VB.NET] From DB in OBJ

    Ciao a tutti,

    Sto cercando di trovare uno standard per la selezione di datarow dal database in oggetti.
    Ho trovato questa soluzione e volevo sottoporvela per vedere cosa ne pensate :
    Database
    tbl banco
    tbl bancoTempoPortata

    Relazione
    banco - bancoTempoPortata
    1 - N

    codice:
    Public Class banco
        Public prop1 as string
        ....
        Public propN as string
    
        Public dicTAp As New Dictionary(Of Double, tempoPortata)
    
    
    
        //Metodo
       Public Function loadTempoPortate(ByVal idCont As Integer)
          Dim tempAp As New tempoPortata
          tempAp.db = Me.db
         dicTAp = tempAp.getListTApertureFromBancoCont(Me.cod, idCont)
       End Function
    End Class
    
    Public Class tempoPortata
    
        Public Function getListTApertureFromBancoCont(ByVal codBanco As Integer, ByVal idCont As Integer) As Dictionary(Of Double, tempoPortata)
            Dim arrTap As New Dictionary(Of Double, tempoPortata)
            Dim tmpTAp As tempoPortata
            db.SQL = "SELECT * FROM banchiTempoPortata WHERE [tempPortata_codBanco] = '" & codBanco & "' AND [tempPortata_idCont] = '" & idCont & "' "
    
            For Each row In db.getDT("banchiTempoPortata").Rows
                tmpTAp = New tempoPortata
                tmpTAp.db = Me.db
                tmpTAp.load(row)
                arrTap.Add(Me.portata, tmpTAp)
            Next
            Return arrTap
        End Function
       Private Function load(ByVal row As DataRow)
            Try
                Me.id = row("tempPortata_id")
                Me.codBanco = row("tempPortata_codBanco")
                Me.idCont = row("tempPortata_idCont")
                Me.portata = row("tempPortata_portata")
                Me.tApertura = row("tempPortata_tApertura")
                Me.caso = row("tempPortata_caso")
    
                Return True
            Catch ex As Exception
                Me.lastError = ex.Message
                db.Disconnetti()
                Return False
            End Try
        End Function
    
    End Class
    Ho omesso un po di dettagli inutili, ma l'idea di base è questa

    La classe banco ha come proprietà una dictionary che come chiave ha un proprietà unicova della classe tempoportata e come value l'oggetto tempoportata

    Nel metodo loadTempoPortata della classe banco io vado a richiama un metodo della classe tempoPortata che mi restituisce una dictionary con cui aggiorno la dictionary del banco.

    Come vi sembra?
    Che mestiere difficile.....essere da soli ancora di più

  2. #2
    Moderatore di Windows e software L'avatar di URANIO
    Registrato dal
    Dec 1999
    residenza
    Casalpusterlengo (LO)
    Messaggi
    1,255
    1- Esistono soluzioni già fatte per questo (si chiamano ORM)
    2- La tua soluzione funziona solo per quella query, devi modificarla per ogni query che esegui

  3. #3
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    Si sapevo dell'esistenza di ORM, avevo iniziato a guardali ma per il momento messi da parte in quanto non avevo sufficiente padronanza.
    Nell'eventualità mi consiglieresti entity framework di .net?

    Nel caso specifico del esempio, il fatto di mettere gli oggetti in un dictonary ti sembra una brutta idea?

    Per rispondere alla tua seconda affermazione sviluppo un metodo per ogni query che l'oggetto necessità.

    Ciao
    Paolo
    Che mestiere difficile.....essere da soli ancora di più

  4. #4
    Moderatore di Windows e software L'avatar di URANIO
    Registrato dal
    Dec 1999
    residenza
    Casalpusterlengo (LO)
    Messaggi
    1,255
    Quote Originariamente inviata da Fractals87 Visualizza il messaggio
    Si sapevo dell'esistenza di ORM, avevo iniziato a guardali ma per il momento messi da parte in quanto non avevo sufficiente padronanza.
    Nell'eventualità mi consiglieresti entity framework di .net?

    Nel caso specifico del esempio, il fatto di mettere gli oggetti in un dictonary ti sembra una brutta idea?

    Per rispondere alla tua seconda affermazione sviluppo un metodo per ogni query che l'oggetto necessità.

    Ciao
    Paolo
    Ormai gli ORM sono largamente utilizzati.
    Puoi creartene uno tuo, ma è consigliabile di farlo riutilizzabile o per ogni query dovrai ogni volta ricrearti tutto quel codice (diventerebbe frustrante programmare).

    Al psoto di dictionary utilizzerei un semplice Ienumerable, salvarti l'indice è un problema se l'indice è formato da più colonne.


    Di ORM per .NET ne esistono molti,
    -EF(entity framework) è sicuramente il principale, ma è un mostro che trovo difficile da domare quando le cose si fanno complesse.
    -Dapper lo usano in molti
    -Petapoco è un progetto singoladll, ma funziona molto bene
    -Tante altre

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.