2009-05-30 62 views
1

我在这里发布了关于多语言数据库设计的问题,
[] What are best practices for multi-language database design?
我喜欢马丁的建议,但现在我有一个问题什么是创建业务对象的最佳方式?如果我将创建包含ProductTranslation对象的产品,那么绑定和在UI中工作将很复杂,如果只有本地化对象,我将不得不为CMS创建不同的对象
非常感谢!多语言数据库设计的业务类

+0

感谢您的回答!我不敢相信这个问题的关注度很低。你能写出关于这个主题的结论吗(例如你使用什么方法,利弊等)来评论或回答。将不胜感激。 – 2012-04-27 11:22:54

+0

@krocan我不记得所有的优点和缺点,因为我需要这2年前,但我认为马丁完全适用于这个问题 – 2012-04-27 15:32:41

回答

2

难以回答,因为这取决于您的确切需求。我们有一个地方是这样的(基于其他问题所描述的DB型):

  • 的业务对象数据库为蓝本,这意味着我们有一类产品,它具有ProductTranslation对象的集合
  • 在产品类中,我们拥有多语言数据的属性,例如说明
  • 这些属性的吸气查找正确的翻译对象(基于当前语言),并返回相应的值

一个很简单的例子(只显示相关部分):

class ProductTranslation 
{ 
    public string Description; 
} 
public class Product 
{ 
    private List<ProductTranslation> _translations; 

    private ProductTranslation GetTranslation(string language) 
    { 
     // return translation for specified language 
     // or return translation for default language   
    } 

    public string Description 
    { 
     get 
     { 
      return GetTranslation(GetCurrentLanguage()).Description; 
     } 
    }  
} 

我们为ASP.NET Web应用程序选择了这种方法。当前语言对于每个用户可能不同(用户可以为UI和数据选择他们的首选语言)。这种方法允许我们为全部用户全局缓存数据。

根据您的需要,这种方法可能不是最好的。例如。将Product和ProductTranslation表建模为一个业务对象(产品),然后为特定语言加载(例如,如果数据是只读的并且不需要在应用程序范围内缓存),可能会更好。