在nhibernate中修改hbm文件中的表名

时间:2013-04-29 09:58:31

标签: c# nhibernate nhibernate-mapping

目前我遇到了一个问题,我必须在nhibernate配置文件中动态更改表名。列名始终相同,只有表名更改客户到客户。我搜索了这个问题并获得了一些像

这样的链接

How to use Nhibernate with variable or dynamic table names like Jan08Tran,Feb08Tran,Mar08Tran

以上但我不知道如何使用配置文件来实现它。

请帮我解决这个问题。我正在使用带有hbm文件和c#的nhibernate。

谢谢,

1 个答案:

答案 0 :(得分:0)

使用命名约定:

public class MyCustomNamingStrategy : INamingStrategy
{
    public MyCustomNamingStrategy(IDictionary<string, string> properties)
    {
         _properties = properties;
    }

    public string TableName(string tableName)
    {
        tableName = tableName.Replace("[customPart]", _properties["foo"]);
        return DefaultNamingStrategy.Instance.TableName(tableName);
    }

    public string ClassToTableName(string className) { return DefaultNamingStrategy.Instance.ClassToTableName(className); }
    public string PropertyToColumnName(string propertyName) { return DefaultNamingStrategy.Instance.PropertyToColumnName(propertyName); }
    public string ColumnName(string columnName) { return DefaultNamingStrategy.Instance.ColumnName(columnName); }
    public string PropertyToTableName(string classNme, string propertyName) { return DefaultNamingStrategy.Instance.PropertyToTableName(className, propertyName); }
    public string LogicalColumnName(string columnName, string propertyName) { return DefaultNamingStrategy.Instance.LogicalColumnName(columnName, propertyName); }
}

config.SetNamingStrategy(new MyCustomNamingStrategy(config.Properties));

然后你只需要将这个附加属性添加到hibernate.cfg