2009-11-03 4 views
10

Ho uno scenario in cui ho bisogno di valori localizzati di oggetti nel mio database.Tabelle localizzate e Entity Framework

Supponiamo che tu abbia un'applicazione che può creare animali, se l'utente è inglese il valore della proprietà "Nome" di un animale verrebbe inserito come "Gatto" nell'interfaccia utente mentre sarebbe inserito come "Chat" in francese.

La tabella di cultura animale contiene 2 record che indicano lo stesso animale nella tabella padre.

Durante la lettura dei valori, se il valore di "Nome" non esiste nella cultura utente, verrà utilizzato il valore predefinito (valore con cui l'oggetto è stato originariamente creato). I seguenti diagrammi dimostrano come i dati vengono memorizzati in SQL:

alt text

sto cercando di mappare questo schema per un modello a oggetti utilizzando Entity Framework, sono un po 'confuso su ciò che la migliore modo di affrontare il problema.

L'EF è appropriato per questo? Dovrei usare EF4?

Questo modello EF verrà utilizzato da Servizi RIA .NET.

Grazie,

Pierre-Yves Troel

+2

Avete bisogno di avere più lingue vengono visualizzati nell'applicazione, allo stesso tempo, o sarebbe una sola lingua alla volta? –

+0

Qual è la relazione tra la tua domanda e "AD" che hai inserito alla fine di esso? Comunque guarda questa domanda qui http://stackoverflow.com/questions/2272026 –

risposta

-1

io non sono sicuro che ci si vuole fare questo nel database. Penso che sarebbe più sensato usare un file di configurazione o una risorsa che definisca i nomi specifici della cultura.

È inoltre possibile controllare la documentazione Microsoft su internationalization and localization.

+0

concordato. Questo è il modo corretto di fare iot. –

+7

Le risorse sono più dedicate ai valori statici dei negozi rispetto a quelli dinamici, come in questo caso. L'animale è una definizione di un'entità che non sai quanti valori (istanze) avrà. In questo caso, l'approccio migliore (non l'unico) è suggerito da Pyttroll – Lester

+1

Molto tempo fa, ma "hai" da utilizzare un database per il contenuto generato dall'utente/amministratore. In termini di generazione, i file di risorse vengono utilizzati solo in fase di pre-produzione perché richiedono la compilazione. Potresti provare a generarli dinamicamente, ma poi entrerai in problemi di blocco e tutta una serie di problemi già risolti da un DBMS. – rism

4

Quello che ho fatto in una situazione simile è stato creato da una vista dire LocalizedAnimals che è una rappresentazione piatta di quella struttura a 2 tabelle e creato un modello EF per quella vista. Quindi, quando ho bisogno di visualizzare i dati sugli animali francesi, filtrerei quelli LocalizedAnimals e avrò un semplice elenco di oggetti semplice come risultato.

Qualcosa di simile a questo:

var localizedAnimals = myContext.LocalizedAnimals.Where(
          p => p.CultureName == Thread.CurrentThread.CurrentUICulture.Name 
         );