Release notes for re-motion version 1.13.45

List of Issues

New Features

Details

[COMMONS-2184] Backend: Change IDatabaseInfo so that the O/R mapper can return more information about tables

Component/s: Data.Linq Data.Linq for re-store
Issue Type: New Feature
Resolution: Fixed
Status: Closed


Currently, Table instances are created by DatabaseInfoUtility. This does not allow a custom implementation of IDatabaseInfo to return derived versions of Table that include more information. re-store, for example, could return a MappedTable instance that holds information about the ClassDefinition representing the table.

That information would be useful if the O/R mapper or an application extended the SQL generation backend.

This feature therefore restructures IDatabaseInfo so that generation of Tables, Columns, etc. is performed by IDatabaseInfo instead of DatabaseInfoUtility. In addition, re-store's re-linq implementation is changed to return MappedTable instances.

[COMMONS-2183] Backend: Enable applications to extend SelectBuilder, WhereBuilder, etc. with custom SQL generation

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


Currently, applications extending SqlGeneratorBase can return their own implementations of IWhereBuilder, ISelectBuilder, and so on. However, the factory methods creating those implementations only receive a very limited set of context information.

In addition, the existing implementations of WhereBuilder, SelectBuilder, etc. only have a single method (BuildWherePart, BuildSelectPart, etc.) that can't really be reused in a fine-grained manner.

As a third problem for custom SQL generation, subqueries will always result in an "InlineSqlServerGenerator" being created, so a customized SQL generator will never be used for subqueries.

This feature changes the signatures of IWhereBuilder, ISelectBuilder, and so on to receive more context (SqlGenerationData), it makes the implementations of WhereBuilder, SelectBuilder, etc. more suitable for fine-grained reuse, and it adds a new API (CreateNewSqlGenerator) that is used to get a new SQL generator for inline SQL.