我正在将我的 ef-code-first 应用程序移动到 code-first-migrations 模型,并将我的数据库初始化程序DropCreateDatabaseIfModelChanges
从MigrateDatabaseToLatestVersion
.
在我最初的初始化程序中,我正在创建一些用户定义的函数等并对数据库配置进行更改(例如SET AUTO_CLOSE OFF
)。所有这些都是通过直接对 DB 执行 SQL 来实现的,因为它不受 EF 支持。
现在我已经转移到迁移模型,我正在尝试做同样的事情,通过向Up
生成的DbMigration
类的方法添加代码。此代码使用Sql
注入 SQL 的方法。
但是,结果我收到了各种错误,例如:
创建用户定义函数的我的 SQL 导致错误说
CREATE FUNCTION
语句必须在批处理的开头。我的
ALTER DATABASE
声明导致一个错误,指出它不能在用户事务中使用。(我没有创建交易,但大概已经开始了)。
我该如何克服呢?在DbMigration
- 派生类中,我似乎无法访问 DbContext,因此无法直接访问数据库。