sql-servernhibernatequery-hints

How can I use the READPAST hint in NHibernate?


Is there any way I can get NHibernate to use the READPAST hint when selecting data from SQL Server?


Solution

  • Option #1 Easy way: SQL query

    Session.CreateSQLQuery("select * from YourEntityTable with (readpast) where SomeColumn = :col")
    .AddEntity(typeof(YourEntity))
    .SetString("col", value)                            
    .UniqueResult<YourEntity>();
    

    Option #2 Requires more work:

    If you're not using one of NHibernate.LockMode you can override dialect's AppendLockHint() to something like:

    public override string AppendLockHint(LockMode lockMode, string tableName)
    {
        if (lockMode == <lockModeYouWantToSacrificeForThis>)
        {
            return tableName + " with (readpast)";
        }
        return tableName;
    }