1

Je trouve cette question, qui est similaire à un problème que je voudrais résoudre:Comment gérer plusieurs tables avec la même structure (Redux)

How to manage multiple tables with the same structure

Cependant, en raison de la nature craptastical de VB, la solution ne fonctionne pas vraiment. Cela ne fonctionne pas car VB.NET exige que l'implémentation de chaque méthode/propriété dans l'interface soit explicitement déclarée.

En ce qui concerne le problème que je suis vraiment en train de résoudre, voici:

  • J'ai beaucoup de tables de consultation/domaine dans la base de données que tous ont la même structure
  • Les éléments de ces tables sont généralement utilisés pour les bas de chute dans l'interface
  • Je voudrais éviter un tas de méthodes de dépôt boilerplate pour récupérer le contenu de ces tables (une méthode par table suce vraiment quand vous avez 40 tables)
  • Je suis pas en utilisant le seul vrai table de recherche anti-modèle et ce n'est pas une option

Quelqu'un at-il une autre solution pour cela que le travail de travail en VB?

Répondre

0

Voici le code que nous avons fini par:

Public Function GetDomainTableList(tableName As String) As IEnumerable(Of Object) 

    Dim table = CType(GetType(FECEntities).GetProperty(tableName).GetValue(DB, Nothing), IEnumerable(Of Object)) 

    Dim dt = From r In table 
      Select r 

    Return dt.ToList() 

End Function 

je l'avais d'abord pensé que cela ne fonctionne pas pour nous depuis que je suis en train de projeter chaque objet retourné dans une classe DomainTableItem que j'avais écrit . Mais alors j'ai réalisé que le constructeur SelectList ne se souciait pas vraiment du type d'objet qu'il prend dedans. Vous venez de passer dans une chaîne contenant le nom de la propriété et il utilise la réflexion pour retirer la valeur.

Donc, tout fonctionne de cette façon et j'ai évité d'écrire une méthode par domaine/table de recherche.

0

Le référentiel générique devrait fonctionner dans ce cas. Il y en a beaucoup disponibles online ou vous pouvez en écrire un plus simple pour les tables de recherche.

Questions connexes