Question

Dans une application web comme un wiki ou des forums ou un logiciel de blog, il est souvent utile de stocker vos données dans une base de données relationnelle.Étant donné que de nombreuses sociétés d'hébergement proposent une base de données unique avec leurs plans d'hébergement (avec des bases de données supplémentaires coûtant un supplément), il est très utile pour vos utilisateurs lorsque vos objets de base de données (tables, vues, contraintes et procédures stockées) ont un préfixe commun.Il est courant que les applications conscientes de la rareté des bases de données aient un préfixe de table codé en dur.Mais j'en veux plus.Plus précisément, j'aimerais avoir un préfixe de table que les utilisateurs peuvent désigner, par exemple dans le fichier web.config (avec une valeur par défaut appropriée, bien sûr).

Puisque je déteste coder CRUD opérations à la main, je préfère travailler avec un OR/M compétent et j'ai utilisé (et apprécié) LINQ to SQL, Subsonic et ADO.Net.Cependant, j'ai quelques difficultés dans un nouveau projet lorsqu'il s'agit de mettre un préfixe de table dans le fichier web.config d'un utilisateur.Existe-t-il des produits OR/M basés sur .Net capables de gérer ce scénario avec élégance ?

Le mieux que j'ai pu trouver jusqu'à présent est d'utiliser LINQ to SQL avec un fichier de mappage externe que je devrais mettre à jour d'une manière ou d'une autre en fonction d'un paramètre web.config encore hypothétique.

Quelqu'un a-t-il une meilleure solution ?J'ai essayé d'y parvenir dans Entity Framework, mais cela s'est rapidement transformé en désordre.(En raison de ma méconnaissance d'EF ?Peut-être.) Et SubSonic ?A-t-il en outre la possibilité d'appliquer un préfixe de table au moment de la génération du code ?

Était-ce utile?

La solution

J'ai maintenant recherché ce qu'il fallait pour faire cela dans Entity Framework et LINQ to SQL et documenté les étapes requises dans chaque.C'est beaucoup plus long que les réponses ici ont tendance à l'être, je me contenterai donc d'un lien vers la réponse plutôt que de la dupliquer ici.C'est relativement complexe pour chacun, mais LINQ to SQL est la solution la plus flexible et aussi la plus simple à mettre en œuvre.

Autres conseils

Vitesse de la lumière vous permet de spécifier un Stratégie de nommage qui vous permet de résoudre les noms de table de manière dynamique au moment de l'exécution.

Plutôt que d'utiliser des préfixes de table, demandez à un utilisateur d'application qui appartient à un schema (dans MS SQL 2005 ou supérieur).

Cela signifie qu'au lieu de :

select * from dbo.clientAProduct
select * from dbo.clientBroduct

Tu as:

select * from clientA.Product
select * from clientB.Product
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top