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);
        }
Example #2
0
        public override string AppendLockHint(LockMode lockMode, string tableName)
        {
            if (lockMode.Equals(LockMode.UpgradeNoWait))
            {
                return(tableName + " with (updlock, rowlock, readpast)");
            }

            return(base.AppendLockHint(lockMode, tableName));
        }