Classe privata nel repository ORM?

0

È un odore di codice?

Ho un repository che si connette a un server SQL. Questo repository utilizza Dapper per mappare i risultati su un oggetto.

Ho un metodo in questo repository che controlla un risultato, quindi restituisce un bool sul fatto che il risultato abbia superato un test.

Poiché non voglio utilizzare i risultati della query SQL al di fuori del metodo, voglio creare un modello privato all'interno del file repository per agire da intermediario, qualcosa che la query può eseguire il mapping temporaneamente, mentre il resto del metodo esegue qualsiasi altra cosa sia necessaria.

Non voglio creare un metodo pubblico in quanto non verrà utilizzato al di fuori di questo repository, sto anche attivamente cercando di ridurre la quantità di file di questo progetto.

È brutto usare una classe privata in un file di repository? Ha bisogno di essere una classe pubblica in una cartella del modello?

    
posta Jessica Ward 10.12.2018 - 10:55
fonte

1 risposta

2

No, non è male avere classi private nei repository.

Immagino che la confusione si verificherebbe sul motivo per cui hai bisogno di una lezione privata. Piuttosto che un'altra opzione.

  1. Utilizza una classe pubblica esistente.

    Il tuo deposito è una memoria concettuale per le classi pubbliche, se devo fare una domanda sullo stato di tali dati, non posso usare la classe pubblica a cui è associata?

  2. Non associare affatto una classe

    Se la domanda riguarda i dati memorizzati nel loro complesso. es. "ci sono più di 100 clienti memorizzati?" Quindi non posso mappare la risposta della mia query a un tipo di valore semplice, o eseguire l'intero calcolo in SQL e restituire un valore booleano?

    Oppure, se la domanda è complessa e deve essere eseguita in codice, non posso usare un DataSet piuttosto che mappare su un oggetto?

  3. Perché privato piuttosto che interno?

    Piuttosto che una classe privata, potrebbe essere meglio usare una classe interna. Questo ti permette di mettere la classe nel suo stesso file. So che non ti piacciono i file, ma è il modo standard e il prossimo programma per guardare il codice ti ringrazierà per questo.

Dovrei aggiungere un chiarimento. Normalmente è una buona cosa mappare dati complessi in classi e incapsulare le funzioni come metodi.

Quello che dovresti cercare di evitare è creare classi di dati per i risultati di query casuali. Poiché non hanno alcun oggetto concettuale al quale si allineano, possono moltiplicarsi senza controllo mentre aggiungete e modificate varie query ad hoc.

Se hai bisogno di avere una classe di questo tipo, mantenerla privata o interna è una buona cosa

    
risposta data 10.12.2018 - 11:07
fonte

Leggi altre domande sui tag