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

Database 使用NHibernate是否可以基于语言创建不同的数据库列(字段)名称?,database,nhibernate,database-design,language-agnostic,internationalization,Database,Nhibernate,Database Design,Language Agnostic,Internationalization,今天工作中出了点事,我不知道你会怎么做。本质上,我们有一个应用程序正在使用NHibernate。目前,我们正在使用Fluent NHibernate,并使用ExportSchema直接从域导出模式。列名是英文的 在今天的一些讨论中,我们发现,除了国际化数据外,还有一个想法,就是让列名也使用安装语言 例如,如果数据库部署到讲英语的国家,列名将使用英语,如果数据库部署到讲法语的国家,列名将使用法语 这个理论似乎是这样的:如果用户想要对数据存储编写查询,他们就可以使用基于其母语的列名进行查询。(假设它

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

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

例如,如果数据库部署到讲英语的国家,列名将使用英语,如果数据库部署到讲法语的国家,列名将使用法语

这个理论似乎是这样的:如果用户想要对数据存储编写查询,他们就可以使用基于其母语的列名进行查询。(假设它们的名称是描述性的)

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


谢谢,您可以为您想要支持的每种语言使用资源文件,并且在流畅的映射中引用这些资源,而不是硬编码字符串。因此,映射示例如下所示:

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#中使用资源的示例:


您的列名是源代码的一部分,您是否用用户的本地语言编写所有源代码?最后你有很多节目。谢谢你,这证实了我的一些想法。但是,从维护/测试的角度来看,我不太确定这样做的实用性。