You need to control the stack
I have a fairly strong opinions about the way I build software, and I rarely want to compromise on them. When I want to build good software, I tend to do this with the hindsight of what is not working. As such, I tend to be... demanding from the tools that I use.
What follows are a list of commits logs that I can directly correlate to requirements from Rhino Security. All of them are from the last week or so.
- Applying patch (with modifications) from Jesse Napier, to support unlocking collections from the cache.
- Adding tests to 2nd level cache.
- Applying patch from Roger Kratz, performance improvements on Guid types.
- Fixing javaism in dialect method. Supporting subselects and limits in SQLite
- Adding supporting for paging sub queries.
- Need to handle the generic version of dictionaries as well.
- Override values in source if they already exist when copying values from dictionary
- Adding the ability to specify a where parameter on the table generator, which allows to use a single table for all the entities.
- Fixing bug that occurs when loading two many to many collection eagerly from the same table, where one of them is null.
- Fixing the build, will not add an interceptor twice when it was already added by a facility
- Generic components will take their lifecycle / interceptors from the parent generic handler instead of the currently resolving handler.
- Adding ModelValidated event, to allow external frameworks to modify the model before the HBM is generated.
- We shouldn't override the original exception stack
- Adding tests for With.QueryCache(), making sure that With.QueryCache() can be entered recursively. Increased timeout of AsyncBulkInsertAppenderTestFixture so it can actually run on my pitiful laptop.
- Adding support for INHibernateInitializationAware in ARUnitOfWorkTestContext
- Adding error handling for AllAssemblies. Adding a way to execute an IConfigurationRunner instance that was pre-compiled.
- Will not eager load assemblies any more, cause too many problems with missing references that are still valid to run
Without those modifications, I would probably have been able to build the solution I wanted, but it would have to work around those issues. By having control the entire breadth and width or the stack, I can make sure that my solution is ideally suited to what I think is the best approach. As an aside, it turn out that other people tend to benefit from that.