[.net] Dovrei usare enum o interrogare una tabella nel mio database?



1 Answers

Avendo mantenuto questo genere di cose in una vita precedente, sono d'accordo con Steven sul fatto che un enum è abbastanza ragionevole. Il tuo codice è chiaro e un enum significa che devi aggiornare solo un singolo file se aggiungi tipi di dati.

Suggerirei anche di commentare l' enum , chiarendo che i valori devono corrispondere a quelli della tabella Publication Types nel database.

Buona domanda, a proposito! +1 per spiegare la domanda in modo così chiaro e prendersi il tempo per riflettere sulle soluzioni prima di postare.

Question

Nel mio database ho tabelle che definiscono i tipi per esempio

Tabella: tipi di pubblicazione

ID | Type
----------
1  | Article
2  | Abstract
3  | Book
....

Che è correlato tramite la chiave ID a una tabella di pubblicazione che ha il campo ID tipo .

Quindi creo una tabella di dati di PublicationTable dell'applicazione .NET che voglio filtrare in base al tipo di pubblicazione. Ad esempio la seguente funzione mi fornisce il numero di pubblicazioni per un determinato autore e tipo di pubblicazione.

    Public Function countPublications(ByVal authorID As Integer, _ 
                                      ByVal publicationType As Integer) As Integer

        Dim authPubs As New PublicationsDataSet.tblPublicationsDataTable
        authPubs = Me.getAuthorsPublications(authorID)

        Dim dv As New DataView(authPubs)
        dv.RowFilter = "status='published' AND type='" + _ 
                       publicationType.ToString + "'"

        Return dv.Count

    End Function

Per chiamare questa funzione per ottenere un conteggio di articoli di un autore di un tipo specifico, potrei

  1. chiama la funzione con due numeri interi

    countPublications (authorID, 1)

  2. impostare un enum in modo che io possa scrivere

    countPublications (authorID, pubType.Article)

    o

  3. in qualche modo utilizzare la tabella dei tipi di pubblicazione per filtrare il set di dati della pubblicazione, ma non ho capito come farlo.

Quali altri approcci dovrei prendere in considerazione.

Grazie




Per vari motivi sarebbe bello mantenere elenchi come la mia lista dei tipi di pubblicazione e altri in un unico posto; il database. Quindi c'è solo un posto dove possono cambiare. Tuttavia, mi sembra che questo aggiunga una certa complessità al codice e avrei comunque bisogno di avere alcuni elementi hard coded nel codice se volessi fare riferimento a un tipo di pubblicazione specifico come gli articoli di journal. Pertanto, avere un tipo enumerato che riflette i dati nella tabella mi dà la possibilità di chiamare la mia funzione di conteggio in maniera leggibile

countPublications(authorID, publicationType.JournalArticle)

Se i dati nella tabella cambiano, è improbabile che io possa avere un commento nel database per ricordare al maintainer (probabilmente a me) di aggiornare il tipo enumerato nel codice e viceversa.

Grazie a tutti per le vostre risposte. Ora posso procedere tranquillamente con la mente.




Related