NHibernate.FlowQuery v2.2.0 Released

I’m happy to announce version 2.2.0 of NHibernate.FlowQuery (FlowQuery) which mostly improves on the in-code documentation and fixes a few important bugs in the NuGet package. The new version also contains a bunch of code changes, although none of them should affect you too much (hopefully not at all), unless you’re extending the library (see the release notes below). A few new features, however small they might be, are also available.

Version 2.2.0 of FlowQuery can be downloaded here. FlowQuery is, as the last two releases, available on NuGet.

Install using NuGet:

PM> Install-Package NHibernate.FlowQuery

 

Release Notes:

Bug Fixes

  • NuGet package should include license file
  • NuGet package should include release notes file

Improvements

  • Property names for orders set using OrderBy/OrderByDescending(..) should not be case sensitive
  • Add XML DOC comments to provide developers with better in-code documentation (intellisense, etc.)
  • Modify detached queries to not be able to project multiple properties (as sub-queries can’t do that anyway)
  • Modify FetchBuilder to take an instance of IFlowQuery instead of FlowQueryBase
  • Modify JoinBuilder to take an instance of IFlowQuery instead of FlowQueryBase
  • Modify LockBuilder to take an instance of IFlowQuery instead of FlowQueryBase
  • Introduce an interface for PartialSelection which should be returned by “query.PartialSelect”
  • NuGet package should include the new help file (generated using SandCastle)

New Features

  • Add possibility to Suppress errors when adding orders set using OrderBy/OrderByDescending(..)
  • Add possibility to specify custom criteria builder instead of using static helper (CriteriaHelper)
  • Add possibility to create truly detached queries (e.g. without ISession or IStatelessSession references)

Tasks

  • Introduce the use of StyleCop to enforce basic coding style rules.
  • Introduce the use of SandCastle to generate documentation help files
  • Rename class DelayedFlowQueryImplementor to DelayedFlowQuery
  • Rename class DetachedFlowQueryImplementor to DetachedFlowQuery
  • Rename class DetachedImmutableFlowQueryImplementor to DetachedImmutableFlowQuery
  • Rename class FlowQueryImplementor to FlowQueryBase
  • Rename class ImmediateFlowQueryImplementor to ImmediateFlowQuery
  • Rename class MorphableFlowQueryImplementor to MorphableFlowQueryBase
  • Rename class QueryableFlowQueryImplementor to QueryableFlowQueryBase
  • Rename namespace NHibernate.FlowQuery.Core.Implementors to NHibernate.FlowQuery.Core.Implementations
  • Move ExampleWrapper to NHibernate.FlowQuery.Core.Implementations namespace
  • Move JoinBuilder to NHibernate.FlowQuery.Core.Implementations namespace
  • Move LockBuilder to NHiberate.FlowQuery.Core.Implementations namespace
  • Move FetchBuilder to NHiberate.FlowQuery.Core.Implementations namespace
  • Move PartialSelection to NHiberate.FlowQuery.Core.Implementations namespace
  • Move PartialSelectionBuiler to NHiberate.FlowQuery.Core.Implementations namespace
  • Move SelectionBuilder to NHiberate.FlowQuery.Core.Implementations namespace
  • Move SelectSetup to NHiberate.FlowQuery.Core.Implementations namespace
  • Move SelectSetupPart to NHiberate.FlowQuery.Core.Implementations namespace
  • Move IJoinBuilder to NHibernate.FlowQuery.Core namespace
  • Move ILockBuilder to NHibernate.FlowQuery.Core namespace
  • Move IFetchBuilder to NHibernate.FlowQuery.Core namespace
  • Move ISelectSetup to NHibernate.FlowQuery.Core namespace
  • Move ISelectSetupPart to NHibernate.FlowQuery.Core namespace
  • Move Join to NHibernate.FlowQuery.Core.Structures namespace
  • Move Lock to NHibernate.FlowQuery.Core.Structures namespace
  • Move Fetch to NHibernate.FlowQuery.Core.Structures namespace
  • Move OrderByStatement to NHibernate.FlowQuery.Core.Structures namespace
  • Move Pair to NHibernate.FlowQuery.Core.Structures namespace
  • Clean out all “MetaDataFactory” references (as they are not used, nor planned to be used in the near-future)

The biggest change or this release is the in-code documentation which should provide you all with, just a tiny bit, better intellisense when working with FlowQuery. It also made it possible to generate a proper help file (.chm) using Sandcastle Help File Builder. The help file can be downloaded at SourceForge and is also part of the NuGet package (it should be found in the package folder).

I’ve also altered the documentation page to maintain the documentation of old versions by adding sub-pages for each version being released. Why don’t you take a look at the documentation page and let me know what you think?

Enjoy! (:

Advertisements

NHibernate.FlowQuery v2.1.1 Released

Sad to say that I, in my haste to release version 2.1 of NHibernate.FlowQuery (FlowQuery), mistakenly copied the wrong license text into the “License.txt” file.

Instead of the intended license text for Lesser General Public License (LGPL) I had copied the license text for General Public License (GPL).

I’ve corrected this error in version 2.1.1 of FlowQuery which is released both on SourceForge.net and on NuGet. I’ve also corrected the license text on this WordPress Site and in the old packages released on SourceForge.net.

Unfortunately, it seems to be impossible to update/delete a package on NuGet and hence, I cannot fix the problem in the version 2.1.0 NuGet package, which I’ve unlisted instead.

So, please enjoy version 2.1.1 of FlowQuery! (:

NHibernate.FlowQuery v2.1 Released

I’ve just released version 2.1 of NHibernate.FlowQuery (FlowQuery) which I’ve been busy working on for the last couple of weeks. The new version contains a couple of bug fixes but mostly new features and improvements.

Version 2.1 of FlowQuery can be downloaded here. FlowQuery is now also available on NuGet.

Install using NuGet:

PM> Install-Package NHibernate.FlowQuery

 

Release Notes:

Bug Fixes

  • OrderBy(..) cause query to have same sql projection twice instead of using alias, which cause a crash when also using Distinct()
  • OrderBy(..) cause a crash when used with more complex projections (ternary operations/expressions etc.)

Improvements

  • Should sign assembly with a strong name key
  • Should mark assembly with AllowPartiallyTrustedCallersAttribute
  • Should mark assembly with CLSCompliantAttribute
  • Aggregate.Average should return Double instead of Decimal to avoid multiple type casts in sql
  • Is.In(TEnumerable enumerable) where TEnumerable : IEnumerable should just be Is.In(IEnumerabe enumerable)

New Features

  • Should support ICriteria.SetFetchMode features (e.g. query.Fetch(x => x.Association).WithJoin())
  • Should support ICriteria.SetCacheable/SetCacheRegion/SetCacheMode features (e.g. query.Cacheable([string], [CacheMode]))
  • Should support ICriteria.SetTimeout features (e.g. query.Timeout(int) and query.TimeoutAfter(int).Seconds())
  • Should support ICriteria.SetLockMode features (e.g. query.Lock([alias]).[LockMode]())
  • Should support ICriteria.SetReadOnly features (e.g. query.ReadOnly([bool]))
  • Should support ICriteria.SetComment features (e.g. query.Comment(string))
  • Should support ICriteria.SetFetchSize features (e.g. query.FetchSize(int))
  • Should support Restrictions.IsEmpty/IsNotEmpty and Subqueries.Exists/NotExists features (e.g. Is.Empty(..) and Is.Not.Empty(..))
  • Should support Projections.SubQuery features (e.g. Aggregate.Subquery(..))
  • Should support projections with simple type casting (e.g. (int)x.MyProperty)
  • Should infer GroupBy columns from other projections (aggregations, explicit GroupBy)
  • Should be able to GroupBy without projecting value (e.g. query.GroupBy(..))
  • Should be able to copy/clone a FlowQuery reference (e.g. query.Copy())
  • Should be able to clear all restrictions (e.g. query.ClearRestrictions())
  • Should be able to clear time out (e.g. query.ClearTimeout())
  • Should be able to clear group bys (e.g. query.ClearGroupBys())
  • Should be able to clear fetches (e.g. query.ClearFetches())
  • Should be able to clear locks (e.g. query.ClearLocks())
  • Is.In(..) should have overload accepting a DetachedCriteria
  • SessionExtensions should provide methods for getting Detached/Delayed (+ explicit Immediate) FlowQuery alterations directly

Tasks

  • Add license file (e.g. “License.txt”)
  • Add release notes file (e.g. “Release Notes.txt”)
  • Add read me file (e.g. “Read Me.txt”)
  • Add NuGet support

I’ve also updated the unit test suite (~150 new tests) and the documentation to cover the new features and improvements.

Enjoy! (: