class SetIdentitySeedOperation: MigrationOperation, which sets the identity value for the specified table. To wire it up, I use a custom
SqlServerMigrationSqlGenerator, so if I manually write
.AddOperation(new SetIdentitySeedOperation(...)) in my migration's
void Up(), my
Generate method gets called, and I generate the appropriate SQL there.
What's the mechanism to register this custom operation with the migration scaffolding, so that the code to add this operation gets generated on
UPDATE: I've been looking at the EF migrations source code, and it seems that the list of the migration operations to get scaffolded comes from a call to
EdmModelDiffer is internal, so there's seemingly no way to plug your own conventions or attributes into the scaffolding engine.
In light of this, the existence of the public surface for the migration operations and SQL generation seems rather pointless, as it provides no true extensibility point for the library users, requires the user to manually write explicit calls to their custom migration operations, and that's after having to write some boilerplate code to wrap their SQL generation into an operation.
So is this entire mechanism only useful when the same code targets different databases?
This is now possible with EF 6.1:
Code First Annotations allow you to set annotations on tables and columns and then hook into the scaffolding operations by extending
SqlServerMigrationSqlGeneratorand change the scaffolding based on those attributes you set.