目前我遇到了一个问题,我必须在 nhibernate 配置文件中动态更改表名。列名始终相同,只有表名将客户更改为客户。我用谷歌搜索了这个问题并获得了一些链接,例如
如何使用带有变量或动态表名的 Nhibernate,如 Jan08Tran、Feb08Tran、Mar08Tran
以上,但在这里我不知道如何使用配置文件来实现这一点。
请帮我解决这个问题。我正在使用带有 hbm 文件和 c# 的 nhibernate。
谢谢,
目前我遇到了一个问题,我必须在 nhibernate 配置文件中动态更改表名。列名始终相同,只有表名将客户更改为客户。我用谷歌搜索了这个问题并获得了一些链接,例如
如何使用带有变量或动态表名的 Nhibernate,如 Jan08Tran、Feb08Tran、Mar08Tran
以上,但在这里我不知道如何使用配置文件来实现这一点。
请帮我解决这个问题。我正在使用带有 hbm 文件和 c# 的 nhibernate。
谢谢,
使用命名约定:
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