I'm almost done my infrastructure work & unit tests on the DDL generation
portion of NHibernate needed to support my proposed migrations feature. As
of now I've got an interface:
public interface IDdlOperation
{
IEnumerable<string> GetStatements(NHibernate.Dialect.Dialect dialect);
}
I've re-implemented the ddl generation in the Mapping namespace as a series
of implementations of this interface. Each of these classes accepts a
model which contains the relevant information for building the sql
statements. As much as possible database object names are passed to these
classes pre-qualified and pre-quoted. The relevant mapping classes have
been changed from implementing IRelationalModel to having methods that
produce one or more relevant IDdlOperation instances. The Configuration
class was updated to use these methods.
While I finish out the unit tests and get it all staged into a coherent set
of commits for a pull request I'd like some feedback on the following
topics:
Currently the Configuration/Mapping classes quote and qualify objects using
the dialect methods which results in dialect specific quoting. I this does
not present a problem in the existing system because analysis always
happens at the same time as execution and the target dialect is known. In
a world with coded migrations a migration could be generated against a one
dialect and executed against another with incompatible quoting. Should
these methods be changed to quote and qualify using back-tick quoting and
the operations be changed to mangle those quotes into dialect specific
quoting?
Where is the dividing line between NHibernate and non-core Migrations
features if any? I see this framework eventually containing components such
as versioning strategies, a fluent migration building DSL, a migration
execution framework, and a component which generates/executes coded
migrations within the package manager console. At a minimum that 3rd piece
needs to be a separate assembly because of its dependency on visual studio.
How to people feel about the rest? Should I aim to include some / all of
that within Nhibernate or split it out into a separate assembly?
How do people feel about a fluent DSL for building the coded migrations?
How do we make this into something which is both expressive enough for
people to write a migration themselves and flexible enough that they don't
have to resort to issuing raw sql for everything?
--
---
You received this message because you are subscribed to the Google Groups
"nhibernate-development" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.