我的域名基础中设置了以下功能:
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))
....
甚至更优雅的方法?
提前致谢。
答案 0 :(得分:1)
使用HQL,它是为此而生的
var rowsaffected = session.CreateQuery("UPDATE Part p SET p.Processed=:processed")
.SetParameter(":processed", true)
.ExecuteUpdate();