1
作爲我的實體框架部署的一部分,我試圖將一些腳本部署到新創建的數據庫上,但是出現以下錯誤;實體框架種子部署SQL腳本錯誤
ALTER DATABASE statement not allowed within multi-statement transaction.
我的代碼;
internal sealed class Configuration : DbMigrationsConfiguration<DBContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
}
protected override void Seed(DBContext context)
{
context.Database.ExecuteSqlCommand(
@"ALTER DATABASE MyDB SET ENABLE_BROKER
CREATE QUEUE NewCarShareQueue;
CREATE SERVICE NewCarShareService ON QUEUE NewNewCarShareQueue
([http://schemas.microsoft.com/SQL/Notifications/PostQueryNotification]);");
}
}
我已經試過以下爲好,確保只有一個事務正在經歷一次,而不是在這裏顯示,但是配置當前上下文並重新創建它;
internal sealed class Configuration : DbMigrationsConfiguration<DBContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
}
protected override void Seed(DBContext context)
{
context.SaveChanges();
context.Database.ExecuteSqlCommand(
@"ALTER DATABASE MyDB SET ENABLE_BROKER");
}
}
此,如果你刪除TransactionScope的工作。否則,我得到了同樣的錯誤:「在多語句事務中不允許ALTER DATABASE語句」 – qbik