2010-02-11 7 views
7

Ho bisogno di memorizzare entità localizzate in un database (ad esempio un prodotto, che ha un nome, che è diverso in inglese e danese). Ci sono diversi modi ben noti per farlo, ad esempio con una sorta di tabella delle risorse contenente i valori delle colonne localizzate.C'è qualche ORM .NET che supporta entità localizzate out-of-the-box?

Tuttavia, questo non sembra essere molto facile da inserire in un ORM, quando voglio recuperare un'istanza della classe Product nella lingua inglese e si aspetta che il valore della proprietà Name sia inglese.

Non voglio reinventare la ruota, e penso che questo sia un problema che deve essere molto comune. Qualcuno ORM supporta la localizzazione dell'entità pronta all'uso?

Poiché sono nello stack Microsoft e la scelta più ovvia per un ORM è Entity Framework 4. Esistono funzionalità in EF4 per supportare questo?

risposta

9

per quanto ne so EF4 non fornisce nulla di simile.

Dmitri Maximov ha scritto una buona serie di post riguardante l'attuazione della localizzazione per DataObjects.Net, le informazioni non vi può essere utile per voi, anche se si sta utilizzando (o che verrà usata) qualsiasi altro quadro:

1

mi hanno lo stesso identico problema (localizzare i contenuti, MS pila, ORM ...) e per il momento vado con Resource/tavoli ResourceValue. Io uso Linq-to-SQL con PLINQO templates che ho leggermente regolato per generare proprietà auto localizzate nelle mie entità.

Il modello rileva le chiavi esterne nella tabella Risorsa e crea una colonna appropriata.

Ad esempio, se si dispone di una tabella prodotti con una colonna FK int NameID, verrà creata una proprietà string Name sulla classe Prodotto che restituisce il valore appropriato in base alla cultura del thread corrente.

I lati negativi sono:

  • complessità per gli inserti/AGGIORNAMENTI (deve giocare con 3 tavoli, ma Linq2Sql rendono così difficile)
  • tabelle di navigazione in SQL Management è doloroso perché le colonne di testo sono solo stranieri chiavi

Ho trovato questa domanda occupandomi di una soluzione "best practice", ma non l'ho ancora trovata.

+0

Grazie per l'input. Cordiali saluti, siamo andati con le tabelle simili a risorse, ma pesantemente memorizzati nella cache al fine di ottenere le prestazioni di cui avevamo bisogno. Ciò aggiunge una certa complessità, di cui avrei preferito fare a meno. – driis

Problemi correlati