1

ドメインベースに次の関数を設定しています。

    public void SetProcessFlag<T>(bool flag)
    {
        string tableName = typeof(T).ToString().Replace("MyBase.Core.Domain.", "");

        string sql = string.Concat("update ", tableName, " set ImportProcessed = '" , (flag?"1":"0"), "';");
        Framework.FluentSessionManager.GetSession()
            .CreateSQLQuery(sql)
            .ExecuteUpdate();
    }

「カタログ」のスキーマと「パーツ」のテーブルとのマッピングがあります。これには、Boolとしてマップされた列「ImportProcessed」が含まれています。

ここで、列「ImportProcesses」をtrueに設定する場合、次のように呼び出します。

new Parts().SetProcessFlag<Parts>(true);

これは問題なく機能します。レコードセットの宣言フォルダーがスキーマと同じ名前であると想定する必要はありません。

同じことをすることは可能ですか?:

Framework.FluentSessionManager.GetSession()
.CreateCriteria(typeof(T))
....

それとももっとエレガントな方法ですか?

前もって感謝します。

4

1 に答える 1

1

HQLを使用して、これのために作られています

var rowsaffected = session.CreateQuery("UPDATE Part p SET p.Processed=:processed")
    .SetParameter(":processed", true)
    .ExecuteUpdate();
于 2012-12-11T12:05:40.510 に答える