我开始玩(流利)nHibernate,我想知道如果有人可以帮助以下。我相信这是一个总问题。交易和删除使用流利nhibernate
我想做的事:
delete from TABX where name = 'abc'
其中表TABX被定义为:
ID int
name varchar(32)
...
我建立一个基于互联网的样本代码:
using (ITransaction transaction = session.BeginTransaction())
{
IQuery query = session.CreateQuery("FROM TABX WHERE name = :uid")
.SetString("uid", "abc");
session.Delete(query.List<Person>()[0]);
transaction.Commit();
}
但很可惜,这是生成两个查询(一个选择和一个删除)。我想在单个语句中执行此操作,就像在我的原始SQL中一样。这样做的正确方法是什么?
此外,我注意到,在互联网上的大多数样本中,人们往往总是将所有查询包含在交易中。这是为什么?如果我只运行一个单一的陈述,那似乎是一种矫枉过正。人们倾向于无意识地剪切和粘贴,还是有其他原因?例如,在我上面的查询中,如果我确实管理它从两个查询中获得它,我应该能够删除开始/提交事务,不是吗?
如果它很重要,我使用PostgreSQL进行实验。
从技术上讲,你并没有真正在你的代码中使用fluent-nhibernate。流利的nHibernate是你用来生成映射文件的东西。 – 2010-05-19 23:32:44