您可以覆蓋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:
一些有用的鏈接: - 這是一個基於代碼的自定義提供商
看起來一樣好 - 也許這就是最好創建數據庫第一次當放置在「種子」,即(或遷移必須是一個初始) - 並因可能的權限問題(我沒有嘗試過,但似乎是運行自定義批處理文件的一個非常好的場景,而且更通用) - 也就是說它更容易控制它形成種子 - 比起例如PM控制檯通常是從PM開始的(坦率地說,我不知道在某些情況下可能會如何氾濫 - 儘管可能應該起作用 - 我通常以管理員身份運行VS,所以很可能不會看到任何問題)。 – NSGaga 2012-04-28 17:35:46