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?
Répondre
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'.
Il existe également un port .NET d'Inflector qui effectue le même travail. Le blog de l'auteur est maintenant en panne mais il est disponible au http://cid-net.googlecode.com/svn/trunk/src/Cid.Mvc/Inflector.cs entre autres.
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.
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. –
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
@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. –
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
Bummer. Je suis bloqué sur 3.5 pour le moment –