在EF迁移期间更改数据库选项

msj*_*han 2 database migration entity-framework ef-code-first sqlfilestream

我们为我的dataaccess层启用了一些POCO类和迁移,我们创建了一个初始迁移 - 注意我们使用CreateDatabaseIfNotExist数据库初始化.

但是在数据库中我希望有一个使用SQL Filestream的MessageBody字段,因为文件流的EF限制 - 我们尝试在迁移脚本中手动完成.

我们执行以下sql命令.

Sql("alter table [msg].[Message] add [MessageBody] varbinary(max) FILESTREAM not null");
Run Code Online (Sandbox Code Playgroud)

但我必须设置文件流选项 文件流选项

所以我想在迁移期间/之前执行以下命令.

ALTER DATABASE CURRENT SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL)
Run Code Online (Sandbox Code Playgroud)

但是当添加这个bedore时,表的创建我得到错误:多语句事务中不允许ALTER DATABASE语句.

当您想自动创建数据库时,调整数据库选项的最佳方法是什么?是否有可能在进程执行实际迁移之前拦截迁移进程以执行某些sql?

mr1*_*100 5

要修复发生给您的错误,您只需要将其他bool参数设置为true来调用Sql方法:

Sql("alter table [msg].[Message] add [MessageBody] varbinary(max) FILESTREAM not null", true);
Run Code Online (Sandbox Code Playgroud)

这将导致您的查询将在单独的事务中执行.