2010-08-17 14 views
3

En .net 3.5 si je génère un contexte de données linq à sql, il fait une magie merveilleuse pour pluraliser les noms. Dans mon code, je dois pluraliser certains termes. Puis-je utiliser la méthode que Linq utilise pour générer mes pluriels?Puis-je utiliser la méthode de linq pour la pluralisation d'un terme?

+1

Dunno environ 3,5, mais si je visais 4, je voudrais vérifier le [PluralizationService] EF4 (http://msdn.microsoft.com/en-us/library/system.data.entity.design.pluralizationservices.pluralizationservice. createservice.aspx) – Will

+0

Bummer. Je suis bloqué sur 3.5 pour le moment –

Répondre

2

LINQ to SQL n'expose pas sa logique de pluralisation. Une vérification rapide avec réflecteur révèle que ce n'est pas en utilisant un algorithme complexe terriblement bien:

Si elle se termine par « x », « ch », « sh » ou « ss », puis ajouter « es ».
S'il se termine par 'y' précédé d'une consonne, supprimez le y et ajoutez 'ies'.
Sinon, ajoutez 's'.

Si .NET 4 est une option, alors le PluralizationService d'EF est beaucoup plus complet. Juste au cas où vous avez jamais besoin de pluriel 'pneumonoultramicroscopicsilicovolcanoconiosis'.

2

Vous devez utiliser un réflecteur pour explorer les assemblys de studio visuel qui génèrent le code pour le concepteur linq-to-sql.

+0

Son 4.0, pas 3.5. – Will

+0

pensé que j'obtiendrais un billet de faveur puisque vous étiez un modérateur et il était dans un commentaire =) – Micah

0

LINQ to SQL utilise un système assez simple pour pluralisation. Si vous allez travailler avec des termes complexes, je vous recommande utiliser quelque chose comme the Inflector that is part of SEDE. Ce morceau de code semble provenir du SubSonic project.

+0

Inflecteur ne fait pas partie de subsonic qui semble être une attribution gravement incorrecte. Il a été écrit par Andrew Peters comme un port de l'inflecteur de rubis. Son site n'est plus disponible mais son code est toujours accessible sur: http://cid-net.googlecode.com/svn/trunk/src/Cid.Mvc/Inflector.cs et sa notice de copyright est correctement incluse. –

+0

En fait, je dirais que la version de subsonic est un port indépendant de la version Rails, car ils prennent des décisions différentes sur la façon de nommer les choses après le portage. – stevemegson

+0

@stevemegson c'est vrai, les noms sont différents. Cependant, il semble que subsonic a pris la version d'Andrew, renommé toutes les méthodes, et ajouté une brève documentation XML. –