您可以覆盖 DbMigrationsConfiguration 的种子方法或创建迁移。
然后,您应该能够执行可以从 aspnet_regsql.exe 生成的 SQL,或者在您有权限的情况下执行 aspnet_regsql.exe。
更新 1:
我最终做了如下:
Add-Migration AspNetRegSql
public partial class AspNetRegSql : DbMigration
{
public override void Up()
{
Migrate(false);
}
public override void Down()
{
Migrate(true);
}
private static void Migrate(bool down)
{
var action = down ? "R" : "A";
var connectionstring = ConfigurationManager.ConnectionStrings["DataContext"];
var arguments = string.Format(@"-Q -C ""{0}"" -{1} mrp", connectionstring, action);
var processStartInfo = new ProcessStartInfo
{
WorkingDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase).Replace(@"file:\", string.Empty),
FileName = "aspnet_regsql.exe",
Arguments = arguments,
CreateNoWindow = true,
WindowStyle = ProcessWindowStyle.Hidden
};
using (var process = Process.Start(processStartInfo))
{
process.WaitForExit();
}
}
}
然后将“aspnet_regsql.exe”添加到我的项目中,并将构建操作更改为“如果更新则复制”。
更新 2:
我不知道 NSGaga 发布的库 - 我没有看过它,但建议你也考虑一下。
更新 3:
一些有用的链接: