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