In quale situazione le enumerazioni di Entity Framework diventano utili?

2

Sto lavorando a un progetto in cui ci saranno un sacco di opzioni statiche memorizzate nel database. Ho cercato di usare Enums per questo, ma non vedo come potrebbero essere utili.

Non creano alcun tipo di tabella di ricerca, basta fare riferimento a un numero nella tabella che può essere utilizzato nel codice come opzione enum. Il numero non ha alcun senso per chiunque crei report SSRS e se è necessario aggiungere un'opzione aggiuntiva, è necessario ricompilare.

C'è una situazione in cui questi hanno un vero scopo e sono più adatti di un'entità. O sono generalmente una cattiva pratica per i motivi di cui sopra?

    
posta James 13.05.2014 - 12:09
fonte

3 risposte

2

L'uso di un numero per rappresentare un valore enum è leggermente più efficiente in termini di ricerca nel database. Il rovescio della medaglia è, naturalmente, che è orribilmente difficile capire cosa sia.

Questa è una questione di opinione, tuttavia credo che sia necessario porre l'accento sulla leggibilità, anche nel database. Come tale, preferirei valori di stringa leggibili nel database. Tuttavia, si perde il vantaggio di utilizzare le enumerazioni nel codice, quindi suggerirei di convertire da enumerazioni a stringhe e viceversa. Usa il nome dell'enumerazione come è usato nel tuo codice e se è minimamente descrittivo, dovresti essere in grado di capire facilmente di che tipo hai a che fare guardando il database.

Potresti anche fare un ulteriore passo avanti e inserire il nome formale completo del tipo enum per ricrearlo usando il reflection, ma eviterei questa tecnica se possibile.

Assicurati anche che questi valori siano veramente di natura statica. Aggiungere uno o due tipi di enumerazione extra non è un grosso problema, ma più di questo e probabilmente si tratta di un valore dinamico e a quel punto dovrebbe avere una propria tabella di database.

    
risposta data 13.05.2014 - 15:13
fonte
3

Per gli scenari di reporting, il database non sarà in grado di riportare alcuna informazione significativa sull'enumerazione. Ciò rende le enumerazioni di Entity Framework molto meno utili a meno che non si usi l'enum per fornire il nome o il valore del testo e lo si innesti su una classe che rappresenta la tabella di ricerca (che non è un enum EF, mi rendo conto).

    
risposta data 11.08.2014 - 01:02
fonte
1

Le enumerazioni del database riguardano situazioni in cui qualcosa è necessariamente codificato. L'enumerazione crea un legame tra i dati del database e qualcosa che è codificato nel codice sorgente.

Non pensare a ciò nel senso che sono mai utili, dal momento che sono situazioni in cui ciò è accettabile e necessario. Piuttosto, non usare un enum a meno che tu non abbia questo tipo di situazione di bisogno di relazionarsi direttamente con qualcosa nel codice che non avrebbe senso come dato o semplicemente non può essere estratto nei dati.

Alcuni esempi includono:

  • Un elenco delle funzionalità del programma. Ad esempio, ho una struttura di menu nel database da cui vengono creati i menu in base all'autorizzazione dell'utente, ma è necessario fare riferimento alle funzioni effettive nell'origine che vengono eseguite. Un enum lega un valore del database al codice sorgente effettivo.

  • Un tipo di controllo. Se si dispone di un'interfaccia dinamica definita nel database, per poter dire "una casella combinata", "una casella di testo", ecc., È necessario un qualche tipo di valore da utilizzare per fare riferimento a queste cose. Un enum lega i valori del database ai tipi di controllo. (Non devi fare riferimento direttamente al tipo di controllo, ma potresti definire una sorta di modello di controllo, come un gruppo di pulsanti di opzione o caselle di controllo.)

risposta data 24.06.2016 - 21:41
fonte

Leggi altre domande sui tag