使用NHibernate是否可以根据语言创建不同的数据库列(字段)名称?

时间:2012-12-03 18:58:54

标签: database nhibernate database-design language-agnostic internationalization

今天出现了一些工作,我不确定你会怎么做。基本上,我们有一个使用NHibernate的应用程序。目前,我们正在使用Fluent NHibernate并使用ExportSchema直接从域中导出架构。列名称是英文。

在今天的一些讨论中,我们发现,除了国际化数据外,还有一个想法是让列名也是安装语言。

因此,例如,如果数据库部署到英语国家,则列名称将使用英语,如果将其部署到法语国家,则列名称将使用法语。

理论似乎是这样的:如果用户想要针对数据存储区编写查询,他们将能够使用基于其母语的列名进行查询。 (假设它们以描述性方式命名)。

我不能说我之前遇到过这种情况,我很感兴趣你会怎么做呢?另外,即使我提到NHibernate,如果还有其他选择,请随时提及。

由于

1 个答案:

答案 0 :(得分:0)

您可以为要支持的每个语言使用资源文件,并且在您的流畅映射中引用这些资源而不是硬编码字符串。所以一个示例映射看起来像这样:

public OrderMap()
{
    CultureInfo culture = CultureInfo.CurrentCulture;
    ResourceManager rm = new ResourceManager("HelloWorldGlobed.myRes",typeof(OrderMap).Assembly);

    DynamicUpdate();
    Table(rm.GetString("ORDER_TABLE_NAME",culture));
    Id(x => x.Id, rm.GetString("ORDER_ID",culture));
    Map(x => x.Name, rm.GetString("ORDER_NAME",culture));
}

以上只是一个简单的例子,我没有对此进行测试,但这可以让您了解如何使用资源来完成此操作。您可能希望在静态类或其他内容中合并CultureInfo对象和ResourceManager对象的反转。

以下是在C#中使用资源的示例:

http://www.codeproject.com/Articles/5208/MultiLanguage-Applications

相关问题