J'ai un projet dans lequel un client peut importer un fichier Excel, un fichier csv ou un fichier délimité par des tabulations. Ce fichier est chargé dans une base de données que je convertis en une table de base de données SQLite. Je préfère vraiment travailler avec des objets fortement typés et des datatables. Y a-t-il un moyen de convertir facilement la table de base de données créée en une classe fortement typée en utilisant la réflexion? Le kicker est le fichier importé dans l'application qui sera toujours différent (c'est-à-dire des colonnes différentes) donc je ne peux pas vraiment coder en dur les objets fortement typés, ils devront toujours être générés à la volée.Générer une classe à partir d'une table datatable ou d'une table de base de données
Répondre
Ryan a déjà posé la bonne question et je ne peux qu'agréer que le seul avantage d'une classe fortement typée est au design ou à la compilation, mais pas au moment de l'exécution.
Peut-être que vous voulez après avoir créé vos tables SQLlite construit des classes de types forts dans une autre application qui utilise cette table.
Dans ce cas, vous pouvez probablement regarder dans T4 - Text Template Transformation Toolkit, car il est capable de créer des classes de type fort à partir d'une requête, de sorte que vous pouvez utiliser ces classes lors de la compilation pour d'autres applications. Mais avant de commencer à l'utiliser, vous devez savoir que T4 est l'un des best kept Visual Studio secret s. ;-)
Vous pouvez utiliser les nouvelles fonctionnalités dynamic
de C# 4 si c'était possible. Plus précisément le ExpandoObject Class.
ExpandoObject
représente un objet dont les membres peuvent être dynamiquement ajoutés et supprimés à moment de l'exécution.
Vous avez également le DynamicObject Class.
Jetez un oeil sur les liens suivants pour plus d'informations:
En théorie, vous pouvez créer un assemblage en utilisant quelque chose comme Reflection.Emit, ou même en générant des fichiers de code et en appelant le compilateur pour les intégrer dans un assemblage.
Cependant, je ne suis pas sûr de savoir comment cela serait utile. À condition que le schéma de ces tables soit déterminé au moment de l'exécution, toute utilisation de ces classes générées ne pourra pas utiliser ces propriétés fortement typées que vous avez ajoutées sans utiliser de réflexion, et à ce stade, vous devez essentiellement traiter avec quelque chose de faiblement typé avec le coup de performance supplémentaire de la réflexion. Les types dynamiques dans C# 4.0 peuvent éliminer le succès de la performance, mais vous ajoutez encore beaucoup de complexité sans réel avantage.
- 1. Générer classe d'entités de la table de base de données
- 2. Comment puis-je générer une arborescence à partir d'une table dans une base de données?
- 3. Comment remplir IList <t> depuis DataTable ou à partir d'une table dans la base de données?
- 4. enregistrer DataTable à la base de données
- 5. Créer une table DB à partir de la table de jeux de données
- 6. Créer une table à partir de données DataTable/Dataset existantes avec ADO.net?
- 7. Transférer une table d'une base de données à une autre?
- 8. Générer une feuille Excel à partir de datatable
- 9. Ajouter une exécution de table dans la base de données
- 10. Générer des formulaires à partir de la base de données
- 11. Lier une table de base de données ODBC à Postgres
- 12. Liaison d'un combobox à une table de base de données
- 13. données dans une table emboîtées de base de données
- 14. Générer une table à partir d'un tableau PHP
- 15. Restaurer une seule table à partir d'une sauvegarde de base de données mysqldump vers une table différente dans la même base de données?
- 16. Deux classes de modèle - une table de base de données
- 17. Conception de table de base de données
- 18. Mettre à jour le modèle à partir de la base de données - actualiser une table
- 19. Table des utilisateurs - une table ou deux?
- 20. Comment générer une table d'autorisations accordées aux tables de base de données pour un utilisateur de base de données?
- 21. Existe-t-il un moyen de lier un DataTable à une Table réelle dans une base de données?
- 22. Copie de table de base de données
- 23. table de base de données de recherche de valeur et de le mettre dans un datatable
- 24. Insérer des enregistrements dans une base de données à partir d'une table de hachage
- 25. Comment exporter/télécharger une table à partir de la base de données mysql en utilisant C#?
- 26. CakePHP: table de base de données manquante
- 27. Table de base de données PK
- 28. Copie de lignes non existantes d'une table de base de données vers une autre table de base de données?
- 29. Taille de table maximale pour une base de données MySQL
- 30. objet personnalisé basé sur la table de base de données