Sto utilizzando DataSet per connettere il mio programma C# con il database SQL. Voglio che una delle colonne sia un'enumerazione e voglio che faccia da enum nel mio codice. Come posso fare questo?Enum in DataSet
risposta
Non intendo far scoppiare la bolla di tutti, ma è possibile mappare facilmente un intero ad un Enum utilizzando un DataSet Strongly Typed. Lo faccio tutto il tempo. Piuttosto che digitare il tutto qui ho creato un entry on my Blog che descrive in dettaglio come ottenere ciò.
Non penso che tu possa. SQL Server non ha un concetto di enumerazione.
Non mi interessa come sarà rappresentato nel databse. Può essere int o stringa lì. – svick
Devi preoccuparti. Una cosa che non puoi rappresentare nel database è un enum. –
Odio non essere d'accordo, ma un enum può essere facilmente rappresentato da una tabella di ricerca che ha un ID e un Nome. Questo è fatto molto, specialmente se si sa che la tabella di ricerca cambierà solo quando l'enum nel codice cambia. – Josh
Suggerirei di utilizzare un livello ApplicationService che si trova in cima al livello del repository. Quindi nella classe ApplicationService (si pensi al nome appropriato per questa classe) è possibile trasformare i dati restituiti dal livello repository al valore enum appropriato nell'oggetto POCO.
Si potrebbe provare a utilizzare uno strongly typed dataset.
In che modo questo può aiutare con un enum? –
È possibile utilizzare questo costrutto per modificare/aggiungere uno dei tipi di dati delle colonne al tipo dell'enumerazione personalizzata. Finché i valori numerici di db che lo compongono rientrano nello scopo dell'enum, credo che potrebbe funzionare. Ciò richiederebbe l'aggiunta di una classe parziale o la modifica di quella generata. – James
Anche supponendo che questo funzioni, si tratta di un problema di manutenzione, poiché ora esistono più definizioni di ciò che è valido in quella colonna. Inoltre, sarò sorpreso di scoprire che ADO.NET eseguirà implicitamente un cast che non è possibile fare nel codice: MyEnum e = 1; non verrà compilato. –
Tecnicamente non è possibile. Gli Enum sono tipizzati staticamente, sono progettati per essere utilizzati quando si conoscono tutti i valori al momento della compilazione. Mentre ci sono alcuni work-around, ti consiglio vivamente di non farlo.
Guardare un insieme di dati non modificabile, questo darà la maggior parte dei benefici di un Enum e può essere creato al volo.
Mentre i dati non possono essere memorizzati come Enum, possono essere utilizzati come filtri di fantasia purché i dati nella colonna del database siano di un tipo intero. Questa è una domanda completamente diversa se è quello che stai cercando. Vai allo MSDN page e leggi su Enum's.
- 1. Classe DataSet in Java?
- 2. Enum in enum
- 3. Importa XML in Dataset C#
- 4. Colonna Nullable Int in DataSet
- 5. Come convertire DataSet in DataTable
- 6. ID corrispondenti in due dataset
- 7. Iterate through DataSet
- 8. dataset vs .data - Differenza?
- 9. Dataset Twitter (Social networking)
- 10. Spark Dataset API - join
- 11. Aggiornamento dataset h5py
- 12. Convert to XML Dataset
- 13. ottenere le differenze in 2 DataSet C#
- 14. Come conservare dizionario in HDF5 dataset
- 15. Combina enum multipli in elenco enum principale
- 16. Disattiva IDENTITY_INSERT per l'inserto Dataset
- 17. Dataset di simulazione con Moq
- 18. Chunked HDF5 DataSet e slabsize
- 19. dataframe/Dataset groupBy comportamento/ottimizzazione
- 20. Differenza tra DataSource e DataSet
- 21. Migrazione da DataSet a EntityFramework
- 22. dataset di documentazione con roxygen2
- 23. Dataset supermercato per algoritmo Apriori
- 24. Java Enum find enum
- 25. Corrispondenza spaziale di dataset grandi
- 26. Entity framework 4 o DataSet?
- 27. Aggiorna DataSet annidato con poFetchDetailsOnDemand
- 28. Vuota cella Datagridview con dataset associato
- 29. È vuoto enum (enum {};) portatile?
- 30. Enum all'interno di una enum
Thaks, è esattamente quello che volevo. – svick
+1 Bel lavoro facendo quel proof-of-concept. Sapevo che era possibile con un set di dati digitato. Con questo approccio, tuttavia, non dovrai ripetere la modifica del file xsd ogni volta che apporti modifiche al set di dati poiché xsd verrà calpestato dal designer del set di dati tipizzato? – James
Sì, il xsd sarà sbalordito, il che è problematico. Si spera che l'utilizzo di tipi di enum personalizzati nei set di dati risparmi e la manutenzione sia ridotta al minimo. Tuttavia, preferisco di gran lunga gestire il tipo di enum direttamente piuttosto che dover eseguire il cast avanti e indietro su un numero intero. Ci sono solo pochi posti in cui lo facciamo, e quei set di dati cambiano raramente, quindi l'impatto è minimo.Se cambierai molto i tuoi set di dati, il dolore aumenterà considerevolmente :( – Josh