具有实体框架4指导的多语种数据库

时间:2010-04-06 20:07:29

标签: entity-framework multilingual

我们正在创建一个大型电子商务数据库,需要允许多种语言的数据。例如,产品表将需要一个或多个名称,描述,MetaTitle,MetaKeywords,MetaDescription等翻译。

从关系数据库设计的角度来看,有几种方法可以实现这一目标。但实体框架4增加了一些约束,性能是一个很大的问题。

Multilingual Database Design

类似的问题

以下是我们正在考虑的一组示例表:

[Product]
- Id (PK)
- CreateDate
- NamePhraseId (FK)
- DescriptionPhraseId (FK)
- Price
- ...

[Phrase]
- id (PK)
- Invariant

[Translation]
- id (PK)
- PhraseId (FK)
- LanguageCulture (Example: en-US)
- Translation

我们还可以添加一个LanguageCulture查找表。

这种方法与其他方法一样有其优点和缺点。我们不希望为每个可能需要转换的表列创建额外的表(例如,没有ProductName,ProductDescription表),因为这会使我们的数据模型太大。

在上面的示例中,产品名称将包含零个或一个带有一个或多个翻译的短语。我记得,实体框架需要1到1个关系才能在表上使用相同的主键,我不知道是否是0或1关系的相同情况,但这可能是上述方法的破解者。

我很难找到有关实体框架和多语言数据库/模型设计指南的良好信息。我会非常重视建议和指导,重点是良好的设计和最佳的表现。

提前致谢!

1 个答案:

答案 0 :(得分:0)

鉴于EF4的POCO支持,我认为你的数据库设计应该与EF关系不大,更多的是与良好的多语言设计有关。

根据文档,EF支持“零或一”关系。只需将PhraseId表中的Translation置为可空,即可产生0..1关系。