将列的内容设置为相同的值

时间:2012-12-05 23:22:55

标签: fluent-nhibernate

我的域名基础中设置了以下功能:

    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();
    }

我有一个带有“Catalog”模式和“Parts”表的映射。它包含一个映射列“ImportProcessed”作为Bool。

现在,当我想将“ImportProcesses”列设置为true时,我调用就像这样:

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

这很好用。我不想假设记录集声明的文件夹与模式的名称相同。

是否可以用?:

做同样的事情
Framework.FluentSessionManager.GetSession()
.CreateCriteria(typeof(T))
....

甚至更优雅的方法?

提前致谢。

1 个答案:

答案 0 :(得分:1)

使用HQL,它是为此而生的

var rowsaffected = session.CreateQuery("UPDATE Part p SET p.Processed=:processed")
    .SetParameter(":processed", true)
    .ExecuteUpdate();