我创建了一个生成我的迁移的新类:
public class AuditMigrationCodeGenerator : CSharpMigrationCodeGenerator
{
protected override void WriteClassStart(string @namespace, string className, IndentedTextWriter writer, string @base, bool designer = false, IEnumerable<string> namespaces = null)
{
@base = @base == "DbMigration" ? "AuditMigration" : @base;
var changedNamespaces = namespaces?.ToList() ?? new List<string>();
changedNamespaces.Add("Your.Custom.Namespace");
base.WriteClassStart(@namespace, className, writer, @base, designer, changedNamespaces);
}
}
在Configuration.cs:
internal sealed class Configuration : DbMigrationsConfiguration<EfDataAccess>
{
public Configuration()
{
this.AutomaticMigrationsEnabled = false;
CodeGenerator = new AuditMigrationCodeGenerator();
}
}
它会使用自定义的代码生成器,它产生与我期望的自定义迁移基地的迁移。
欲了解更多信息:https://romiller.com/2012/11/30/code-first-migrations-customizing-scaffolded-code/
感谢的答案,但是这就是我们现在做的,这是麻烦的,因为我们做每天约10迁移新项目。我们需要在每次迁移时进行自定义初始化和逻辑处理,例如审计。所以这对我们来说不是可以接受的选择,并且希望没有定制迁移的脚手架来防止初始化错误。 –