2013-04-29 23 views
0

目前我陷入了一个问题,我必须在nhibernate配置文件中动态更改表名。列名称始终是相同的,只有表名称将客户改为客户。我曾经用Google搜索这个问题,并得到了一些链接像在nhibernate中修改hbm文件中的表名

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

上述之一,但在这里我不知道如何实现这一点使用的配置文件。

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

感谢,

回答

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