public static T GetRequired <T>(this ISession session, object key, string entityName = null, LockMode lockMode = null) where T : class { T obj = null; if (entityName == null) { obj = session.Get <T>(key, lockMode ?? LockMode.None); } else { obj = session.Get(entityName, key) as T; if (lockMode != null && lockMode != LockMode.None) { session.Lock(obj, lockMode); } } if (obj == null) { throw new ArgumentException( String.Format( "Key query did not return result for type '{0}', Key: '{1}'", typeof(T).Name, key ) ); } if (lockMode != null && !lockMode.Equals(LockMode.None)) { session.Lock(entityName, obj, lockMode); } return(obj); }
public override string AppendLockHint(LockMode lockMode, string tableName) { if (lockMode.Equals(LockMode.UpgradeNoWait)) { return(tableName + " with (updlock, rowlock, readpast)"); } return(base.AppendLockHint(lockMode, tableName)); }