我有一个class SetIdentitySeedOperation: MigrationOperation
,它为指定的表设置标识值。为了连接它,我使用自定义的SqlServerMigrationSqlGenerator
,所以如果我在迁移的void Up()
中手动编写.AddOperation(new SetIdentitySeedOperation(...))
,我的Generate
方法将被调用,并在那里生成适当的SQL。
有什么机制可以将这个自定义操作注册到迁移脚手架中,以便在进行Add-Migration
时生成添加此操作的代码?
更新:我一直在查看EF迁移源代码,似乎用于脚手架的迁移操作列表来自对EdmModelDiffer.Diff()
的调用,而EdmModelDiffer
是内部的,因此似乎无法将自己的约定或属性插入到脚手架引擎中。
考虑到这一点,迁移操作和SQL生成的公共表面似乎毫无意义,因为它并没有为库用户提供真正的可扩展性点,需要用户手动编写显式调用他们的自定义迁移操作的代码,而那还要在编写一些样板代码将它们的SQL生成包装成操作之后才行。
所以,这个整个机制只有在同一段代码面向不同的数据库时才有用吗?