0

今天工作中发生了一些事情,我不知道你会怎么做。本质上,我们有一个使用 NHibernate 的应用程序。目前,我们正在使用 Fluent NHibernate 并使用 ExportSchema 直接从域中导出模式。列名是英文的。

在今天的一些讨论中,结果表明,除了将数据国际化外,还有一个想法是让列名也使用安装的语言。

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

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

我不能说我以前遇到过这个,我很好奇你会怎么做?此外,即使我提到了 NHibernate,如果还有其他选项,请随时提及它们。

谢谢

4

1 回答 1

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

于 2012-12-03T21:21:12.267 回答