2009-09-10 3 views
5

Je souhaite ajouter la prise en charge de la localisation à mon objet de domaine. Je donne les résultats suivants:Tables NHibernate/Localization/Lookup

class Person 
{ 
    int Id; 
    City city; 
} 

class City 
{ 
    int Id; 
    string Name; 
} 

Toutes les villes sont enregistrées dans une table db de recherche Cities. Je voudrais avoir:

Person p = PeopleService.GetPersonById(1); 
//Assert p.City.Name == 'London' if culture == 'en-us' 

Je ne aime pas faire

string City::Name { get { return ILocalizationProvider.Get(typeof(City), Id); } 

Je suis venu par cet article:

http://ayende.com/Blog/archive/2006/12/26/LocalizingNHibernateContextualParameters.aspx

Et pourtant, je ne sais pas si son pris en charge dans le New Hampshire 2.1 ou ne pas.

Comment puis-je demander à NH de mettre en cache toutes les villes du cache de second niveau pour éviter les jointures à chaque fois pour les mêmes paramètres régionaux?

Existe-t-il un moyen simple et efficace de traiter les tables de recherche de base de données et la localisation dans NHibernate?

Répondre

3

Dans l'article il est écrit "S'il vous plaît noter que ce comportement n'est plus supporté par NHibernate 2.1 et plus, il était un hack pour commencer, et il n'est pas garanti de continuer à fonctionner."

Cela ne fonctionnera donc pas dans votre scénario. Je recommanderais ceci: http://nhforge.org/wikis/howtonh/localization-techniques.aspx