簡単な質問私はそのようなことをすることができます:
(NHibernate はネストされたトランザクションをサポートしていないため、これに代わる方法はわかりません)
public class GetNextSequence : IIdentifierGenerator
{
public object Generate(NHibernate.Engine.ISessionImplementor session, object obj)
{
using (var nSession = SessionFactoryWrapper.SessionFactory.OpenSession())
{
using( var tran = nSession.BeginTransaction(System.Data.IsolationLevel.Serializable))
{
var update = nSession.CreateSQLQuery("update counter set last_one = last_one + 1 where item like :item");
update.SetParameter("item", "account_contact.account_contact_id");
update.ExecuteUpdate();
var query = nSession.CreateSQLQuery("SELECT last_one FROM counter WHERE item LIKE :item");
query.SetParameter("item", "account_contact.account_contact_id");
var lastOne = query.UniqueResult();
tran.Commit();
return lastOne;
}
}
}
}
または、これは私がすべきではないことですか? もしそうなら、それはなぜですか?