0

現在、nhibernate 構成ファイルでテーブル名を動的に変更する必要があるという問題に悩まされています。列名は常に同じですが、テーブル名が顧客ごとに変わるだけです。私はこの問題をグーグルで検索し、次のようなリンクを取得しました

Jan08Tran、Feb08Tran、Mar08Tran のような変数または動的テーブル名で Nhibernate を使用する方法

上記の1つですが、ここでは構成ファイルを使用してこれを実装する方法がわかりません。

この問題を解決するのを手伝ってください。hbm ファイルと c# で nhibernate を使用しています。

ありがとう、

4

1 に答える 1

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 に追加するだけです。

于 2013-05-13T12:31:24.570 に答える