我们为我的dataaccess层启用了一些POCO类和迁移,我们创建了一个初始迁移 - 注意我们使用CreateDatabaseIfNotExist数据库初始化。
但是在数据库中,我希望有一个使用SQL Filestream的MessageBody字段,因为文件流的EF限制 - 我们尝试在迁移脚本中手动执行。
我们执行以下sql命令。
Sql("alter table [msg].[Message] add [MessageBody] varbinary(max) FILESTREAM not null");
但我必须设置文件流选项
所以我想在迁移期间/之前执行以下命令。
ALTER DATABASE CURRENT SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL)
但是当添加这个bedore创建表时我得到错误:多语句事务中不允许ALTER DATABASE语句。
当您想自动创建数据库时,调整数据库选项的最佳方法是什么?是否有可能在进程执行实际迁移之前拦截迁移进程以执行某些sql?
答案 0 :(得分:5)
要修复发生给您的错误,您只需要调用Sql方法并将其他bool参数设置为true:
Sql("alter table [msg].[Message] add [MessageBody] varbinary(max) FILESTREAM not null", true);
这将导致您的查询将在单独的事务中执行。