2010-05-18 10 views
7

Mi stavo chiedendo se esistessero delle best practice quando si utilizza Entity Framework con database multilingue. Il mio progetto di database per la gestione di questo è di avere una tabella separata per tutte le mie traduzioni:Database Entity e database multi lingua

[Product Table] 
ProductID  PK 
NameId  FK 
DescriptionId FK 

[Translation Table] 
TextId  PK 
LanguageId 
TranslationText 

Sono felice di andare avanti con questo approccio, ma mi chiedevo se Entity Framework ha tutte le caratteristiche che possono aiutare con questo? Sarebbe bello poter avere un oggetto entità prodotto, dargli una lingua e quindi accedere ai campi nome e descrizione direttamente e nella lingua corretta.

Grazie, Nick

+0

Una domanda molto simile a http: //stackoverflow.com/questions/2587898/multilingual-database-with-entity-framework-4-guidance –

+0

si tratta di una domanda simile sì, ma che non ha ottenuto risposto :) –

+0

Ciao Nick, ho lo stesso schema del tuo. Ti dispiace condividere come appare su edmx? –

risposta

1

Entity Framework è un ORM general-purpose, non dispone di servizi dedicati specifici del dominio. Il supporto multilingue per una particolare applicazione è un problema specifico del dominio.

Stai cercando qualcosa di specifico?

+1

Non sto cercando nulla di specifico no. Mi stavo solo chiedendo se esistessero delle buone pratiche quando si facevano soluzioni multilingue con EF –

2

Come qualcuno ha chiesto se ho mai ricevuto una soluzione per questo, ho pensato di aggiungere la mia soluzione a questo:

ho cambiato lo schema DB così invece di avere una tabella per tutte le traduzioni per i diversi tipi di testo, Ho una tabella 'Testo' separata es

[Product Table] 
ProductID   PK 
ProductName   In master language for reference 
ProductDesription In master language for reference 
<other product fields> 

[ProductText Table] 
ProductID    PK 
LanguageId   PK 
ProductName   Language-Specific name 
ProductDescription Language-Specific description 

Ho un certo numero di queste tabelle "di testo" per le traduzioni della lingua locale per ogni tipo di entità che ne ha bisogno.

Poi se ho bisogno di accedere ai dati localizzati da EF, io uso il seguente (esempio è quello di ottenere il testo tedesco):

Product product = db.Products.Where(m => m.ProductId == 1); 
ProductName germanProductName = product.ProductNames(m => m.LanguageId == "de"); 

Spero che questo aiuti

Problemi correlati