Minor performance optimizations.
Bugfix: SqlCommandTimeout should apply to NHibernate queries.
Until now, the parameter applied only to ISqlExecuter queries.
Default timeout (30 seconds) added explicitly to Web.config.
Bugfix: Duplicate unique value error in IX_Permission_Principal_Claim on deployment
when migrating roles from AspNetFormsAuth to SimpleWindowsAuth.
Bugfix: AutoCode fails with unique index constraint error on concurrent inserts.
Bugfix: SqlCommandTimeout still not working on NHibernate queries.
Improved error handling in DSL parser.
New concept **Clustered**, for SQL indexes. Bugfix: order of index properties.
Bugfix: Filter by IDs cannot be combined with queryable filters.
Filter by IEnumerable<Guid> was implemented using materialized entity instances (arrays), so it could not have been easily combined with queryable filters, such as row permission filters. The problem usually manifested with NHibernate error on non-trivial queries, such as browse data structures.
FilterId entity is used as temporary data for filtering (list of IDs) to allow queryable filters above NHibernate limit of 2000 parameters in SQL query (see OrmDataStructureCodeGenerator.SnippetQueryableFilterById).
Filtering by ID is also added to GenericRepository (with some NHibernate issues) as a backup for entity repositories that do not implement a specific filter.
ServerCommandsUtility.CheckAllItemsWithinFilter is simplified by using entity (or generic) repositories' filter implementation.
IPersistenceTransaction.BeforeClose is added to allowe cleaning up the temporary filter data. The filter data cannot be deleted earlier because a query that is created in CreateQueryableFilterIds() may be used anywhere withing the transaction lifetime.
Release 0.9.21.