Tengo un proyecto donde un cliente puede importar un archivo de Excel, csv o archivo delimitado por tabuladores. Este archivo se carga en una tabla de datos que convierto en una tabla de base de datos SQLite. Preferiría trabajar con objetos fuertemente tipados y tablas de datos. ¿Existe alguna manera de convertir fácilmente la tabla de la base de datos creada en una clase fuertemente tipada utilizando la reflexión? El kicker es que el archivo importado a la aplicación siempre será diferente (es decir, diferentes columnas), así que no puedo codificar realmente ningún objeto fuertemente tipado, siempre tendrá que generarse sobre la marcha.Generar clase de tabla de datos o tabla de base de datos
Respuesta
Ryan ya hizo la pregunta correcta y también puedo esperar que el único beneficio de una clase fuertemente tipada sea el diseño o el tiempo de compilación, pero no en tiempo de ejecución.
Quizás quieras después de crear tus tablas SQLlite crear algunas clases de tipos fuertes en otra aplicación que use esta tabla.
En ese caso, probablemente podría echarle un vistazo a T4 - Text Template Transformation Toolkit, porque es capaz de crear clases de tipos fuertes a partir de una consulta, para que pueda utilizar estas clases en tiempo de compilación para otras aplicaciones.
Pero antes de comenzar a usarlo, debe saber que T4 es uno de los best kept Visual Studio secret s. ;-)
Puede usar las nuevas características dynamic
de C# 4 si eso fuera posible. Más específicamente, el ExpandoObject Class.
ExpandoObject
representa un objeto cuyos miembros pueden añadirse dinámicamente y eliminado en tiempo de ejecución.
Usted también tiene DynamicObject Class.
Tome un vistazo a los siguientes enlaces para obtener más información:
En teoría, se podría crear un montaje usando algo como Reflection.Emit, o incluso generando archivos de código y llamando al compilador para construirlos en un ensamblado.
Sin embargo, no estoy seguro de cómo esto podría ser útil. Siempre que el esquema de estas tablas se determine en tiempo de ejecución, cualquier uso de estas clases generadas no podrá usar estas propiedades fuertemente tipadas que haya agregado sin usar el reflejo, y en ese momento usted está tratando esencialmente con algo débilmente tipeado con el rendimiento agregado golpe de reflexión. Los tipos dinámicos en C# 4.0 pueden eliminar el impacto en el rendimiento, pero aún agrega mucha complejidad sin ningún beneficio real.
- 1. Tabla de base de datos o XML
- 2. Cómo copiar datos de una base de datos/tabla a otra base de datos/tabla
- 3. Base de datos - tabla de hechos y tabla de dimensiones
- 4. Nombres de tabla de base de datos: Plural o Singular
- 5. tabla de base de datos genérica diseño
- 6. Copiar datos de una tabla en una base de datos a otra base de datos separada
- 7. ¿Herencia de tabla única o herencia de tabla de clase?
- 8. ¿Actualizar la tabla de la base de datos de una tabla de base de datos de SQL Server a otra?
- 9. generar objetos de dominio java desde la tabla de base de datos
- 10. Tabla = Tabla vs Tabla. Datos (Tabla)
- 11. Quiero copiar la tabla contenida en una base de datos e insertarla en otra tabla de base de datos
- 12. Cómo copiar una tabla de una base de datos mysql a otra base de datos mysql
- 13. Encontrar una restricción única de tabla de base de datos
- 14. "Preferencias de usuario" Diseño de tabla de base de datos
- 15. Devolución de datos de la base de datos en .net: ¿Devuelve una tabla de datos o LIst <T>?
- 16. Generar esquema de tabla inspeccionando Excel (CSV) e importar datos
- 17. ¿Debería una tabla de base de datos tener valores predeterminados?
- 18. Diseño de tabla de base de datos "Seguir usuario"
- 19. Diseño de la base de datos: tabla de transacciones contables
- 20. versión preliminar de la tabla de la base de datos
- 21. Mover una tabla de una base de datos a otra base de datos SQL Server
- 22. tabla de base de datos sqlalchemy está bloqueada
- 23. Actualizar tabla de base de datos PostgreSQL MUY GRANDE eficientemente
- 24. @ManyToMany sin tabla de unión (base de datos heredada)
- 25. Copie la tabla de una base de datos a otra
- 26. 'tail -f' una tabla de base de datos
- 27. Restauración de una tabla MySQL a la base de datos
- 28. claves externas en la tabla de base de datos diferente
- 29. Usar una tabla de base de datos como cola
- 30. Pares clave/valor en una tabla de base de datos