Release notes for re-motion version 1.13.18

List of Issues

Bugfixes

Improvements

Refactoring

Details

[COMMONS-1441] The generated Fetch query model is incorrect because it moves the result operators to the outer query model

Component/s: Data.Linq
Issue Type: Bug
Resolution: Fixed
Status: Closed


(from o in ...
select o).Take (1).FetchMany (o => o.OrderItems)

This should generate the following fetch query model:

from x in (from o in ...
select o).Take (1)
select x.OrderItems

Currently, it generates:

(from o in ...
from x in o.OrderItems
select x).Take (1)

The latter only selects one OrdeItem, the correct query model would select all order items of the first order to be returned.

[COMMONS-1163] Add DataModel classes that are needed when IDatabaseInfo is not available at the parsing stage

Component/s: Data.Linq
Issue Type: Improvement
Resolution: Won't Fix yet
Status: Closed


(no description)

[COMMONS-1165] Add a PropertyPath class which is used to express chained expressions of the form o.Customer.OrderItems

Component/s: Data.Linq
Issue Type: Sub-task
Resolution: Won't Fix yet
Status: Closed


A PropertyPath starts at an IdentifierReference and holds a ReadOnlyCollection of MemberInfos representing the member chain.

Example:

from o in ...<Order>
select o.Customer.OrderItems

=> new PropertyPath (new IdentifierReference (mainFromClause), new[] {memberof (Order.Customer), memberof (Customer.OrderItems) })

[COMMONS-1158] Integrate DataModel with QueryModel

Component/s: Data.Linq
Issue Type: Improvement
Resolution: Won't Fix yet
Status: Closed


  • Make MainFromClause simpler by replacing QuerySource expression with a QuerySourceType
  • Make AdditionalFromClause simpler by replacing FromExpression with a QuerySourceType and removing ProjectionExpression
  • Make SubQueryFromClause simpler by removing ProjectionExpression
  • Make WhereClause simpler by replacing BoolExpression with ICriterion
  • Make SelectClause simpler by replacing ProjectionExpression with IEvaluation
  • Make ResultModifierClause simpler by replacing MethodCallExpression with MethodCall
  • Make Ordering simpler by replacing Expression with IEvaluation
  • Make LetClause simpler by replacing Expression with IEvaluation
  • Make MemberFromClause simpler by replacing MemberExpression with PropertyPath
  • Replace all ParameterExpressions in clauses with new type (with "string Name", "Type Type" properties)

[COMMONS-1325] Refactor IExecutionStrategy

Component/s: Data.Linq
Issue Type: Refactoring
Resolution: Fixed
Status: Closed


  • Replace IExecutionStrategy.GetExecutionExpression with TResult Execute<TResult>(...) which invokes methods via Reflection.
    (Note: Expression might be handy for caching, but shouldn't be implemented until needed.)
  • Execution strategies should check whether QueryModel.ResultType matches specified TResult.
  • CollectionExecutionStrategy should throw if TResult is anything else but IEnumerable<?>