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 nhibernate-development+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.