Estoy usando DataSet para conectar mi programa C# con la base de datos SQL. Quiero que una de las columnas sea una enumeración y quiero que actúe como una enumeración en mi código. ¿Cómo puedo hacer esto?Enum en el conjunto de datos
Respuesta
No me refiero a estallar la burbuja de todos, pero puede asignar fácilmente un número entero a un Enum utilizando un conjunto de datos fuertemente tipado. Lo hago todo el tiempo. En lugar de escribir todo aquí, he creado un entry on my Blog que describe en detalle cómo lograr esto.
No creo que puedas. SQL Server no tiene un concepto de enumeraciones.
No me importa cómo se representará en el databse. Puede ser int o cadena allí. – svick
Tienes que importarle. Una cosa que no puedes representar en la base de datos es una enumeración. –
Odio estar en desacuerdo, pero una enumeración puede ser fácilmente representada por una tabla de búsqueda que tiene una ID y un Nombre. Esto se hace mucho, especialmente si usted sabe que la tabla de búsqueda solo cambiará cuando cambie la enumeración en el código. – Josh
Sugeriría utilizar una capa ApplicationService que se encuentra encima de su capa de repositorio. Luego, en su clase ApplicationService (piense en el nombre apropiado para esta clase) puede transformar los datos que se devuelven de la capa del repositorio al valor enum apropiado en su objeto POCO.
Puede intentar con un strongly typed dataset.
¿Cómo ayudaría esto con una enumeración? –
Puede usar esta construcción para alterar/agregar uno de los tipos de datos de columnas al tipo de su enumeración personalizada. siempre que los valores db numéricos que lo llenan estén en el alcance de la enumeración, creo que podría funcionar. Esto requeriría agregar una clase parcial o modificar la generada. – James
Incluso suponiendo que esto funcione, es un problema de mantenimiento, ya que ahora tiene varias definiciones de lo que es válido en esa columna. Además, me sorprenderé al descubrir que ADO.NET realizará implícitamente un molde que no podría hacer en el código: MyEnum e = 1; no compilará –
Técnicamente no se puede. Los de Enum son de tipo estático, están diseñados para usarse cuando conoce todos los valores en tiempo de compilación. Si bien hay algunos problemas, le recomiendo que no haga esto.
Mire un conjunto de datos no modificable, esto le dará la mayoría de los beneficios de un Enum y se puede crear sobre la marcha.
Si bien los datos no se pueden almacenar como Enum, se pueden usar como filtros de fantasía siempre que los datos en la columna de la base de datos sean de tipo entero. Esa es una pregunta completamente diferente si eso es lo que buscas. Vaya al MSDN page y lea en Enum.
- 1. documentando el conjunto de datos con roxygen2
- 2. Cómo ordenar el conjunto de datos?
- 3. ¿Enum enum en JNI?
- 4. conjunto de datos de clasificación
- 5. Importar XML en conjunto de datos C#
- 6. tipo de datos enum para liquibase
- 7. ¿Cómo se asigna el conjunto de datos dinámicamente en FastReport?
- 8. Columna Nullable Int en el conjunto de datos
- 9. Actualización SQL donde en el conjunto de datos
- 10. Uso del conjunto de datos compartido en el subinforme
- 11. Fusionando puntos aproximadamente iguales en el conjunto de datos
- 12. Enum de la base de datos: pros y contras
- 13. Valores promedio de un conjunto de datos de punto a un conjunto de datos de cuadrícula
- 14. Mejor método para almacenar Enum en la base de datos
- 15. Enum datatype versus tabla de datos en MySQL?
- 16. Error al aumentar el conjunto de datos de referencias cruzadas
- 17. Conjunto de datos de supermercado para el algoritmo Apriori
- 18. DBUnit exportación de datos por el conjunto de clave primaria
- 19. Store enum como cadena en la base de datos
- 20. cómo identificar el conjunto mínimo de parámetros que describen un conjunto de datos
- 21. Falta el nombre del conjunto de datos en la región de datos 'DataSetName'
- 22. Java obteniendo el nombre Enum dado el valor Enum
- 23. Cómo probar el valor de Enum para Enum?
- 24. conjunto de datos La normalización con el rubí
- 25. ¿Cómo llenar el conjunto de datos con varias tablas?
- 26. Crear todo el conjunto de datos del procedimiento almacenado existente
- 27. ¿Es posible hacer pagerank sin todo el conjunto de datos?
- 28. Conjunto UITableView Delegado y el origen de datos
- 29. Git + un gran conjunto de datos?
- 30. Uso de enum en el parámetro Converter
Thaks, eso es exactamente lo que quería. – svick
+1 Buen trabajo haciendo esa prueba de concepto. Sabía que era posible con un conjunto de datos tipeados. Sin embargo, con este enfoque, ¿no tendrá que volver a hacer el cambio en el archivo xsd cada vez que realice algún cambio en el conjunto de datos, ya que el diseñador de conjuntos de datos tipeados pisa fuerte el xsd? – James
Sí, el xsd será destruido, lo cual es problemático. Es de esperar que el uso de tipos de enumeración personalizados en los conjuntos de datos sea moderado, y el mantenimiento se minimizará. Sin embargo, prefiero tratar directamente con el tipo de enumeración en lugar de tener que enviar y recibir un número entero. Solo hay unos pocos lugares donde hacemos esto, y esos conjuntos de datos cambian raramente, por lo que el impacto es mínimo.Si vas a cambiar mucho tus conjuntos de datos, el dolor aumentará sustancialmente :( – Josh