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

时间:2015-04-10 09:54:53

标签: database entity-framework ef-code-first migration sqlfilestream

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

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

我们执行以下sql命令。

Sql("alter table [msg].[Message] add [MessageBody] varbinary(max) FILESTREAM not null");

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

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

ALTER DATABASE CURRENT SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL)

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

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

1 个答案:

答案 0 :(得分:5)

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

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

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