2010-05-18 25 views
7

Me preguntaba si había alguna práctica recomendada al usar Entity Framework con bases de datos en varios idiomas. Mi diseño de la base de datos para el manejo de esto es tener una tabla separada para todas mis traducciones:Entity Framework y bases de datos multilingües

[Product Table] 
ProductID  PK 
NameId  FK 
DescriptionId FK 

[Translation Table] 
TextId  PK 
LanguageId 
TranslationText 

estoy feliz de estar de acuerdo con este enfoque, pero me preguntaba si Entity Framework tiene todas las características que pueden ayudar con esto? Sería bueno poder tener un objeto de entidad de producto, darle un idioma y luego acceder a los campos de nombre y descripción directamente y en el idioma correcto.

Gracias, Nick

+0

Una pregunta muy similar a http: //stackoverflow.com/questions/2587898/multilingual-database-with-entity-framework-4-guidance –

+0

es una pregunta similar que sí, pero que uno no es respondida :) –

+0

Hola Nick, tengo el mismo esquema que el tuyo ¿Te importa compartir cómo se ve en el edmx? –

Respuesta

1

Entity Framework es un ORM de propósito general, que no ofrece características específicas de dominio. El soporte multilingüe para una aplicación en particular es un problema específico del dominio.

¿Estás buscando algo específico?

+1

No busca nada específico no. Solo me preguntaba si había mejores prácticas al hacer soluciones multilingües con EF –

2

Como alguien ha preguntado si alguna vez tengo una solución para esto, pensé que iba a añadir mi solución a este:

he cambiado el esquema de base así que en vez de tener una mesa para todas las traducciones para diferentes tipos de texto, Tengo una tabla de 'Texto' separada, por ejemplo

[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 

Tengo un número de estas tablas de "texto" para traducciones de idiomas locales para cada tipo de entidad que lo necesite.

Entonces, si tengo que acceder a los datos localizados de EF, utilizo el siguiente (ejemplo es conseguir que el texto en alemán):

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

Esperanza esto ayuda

Cuestiones relacionadas