![](/img/trans.png)
[英]How can I alter a model to set the SQL default date when using EF code migrations
[英]How can I perform additional DB initialization when using EF (5) Code First Migrations
我将ef-code-first应用程序移至code-first-migrations模型,并将数据库初始化程序从DropCreateDatabaseIfModelChanges
切换到MigrateDatabaseToLatestVersion
。
在我最初的初始化程序中,我正在创建一些用户定义的函数等,并对数据库配置进行更改(例如SET AUTO_CLOSE OFF
)。 所有这些工作都是通过直接对数据库执行SQL来实现的,因为EF不支持它。
现在,我已经转移到迁移模型,我试图通过将代码添加到生成的DbMigration
类的Up
方法中来做很多DbMigration
。 此代码使用Sql
方法来注入SQL。
但是,结果是出现各种错误,例如:
我创建用户定义函数的SQL导致错误,指出CREATE FUNCTION
语句必须在批处理的开始。
我的ALTER DATABASE
语句导致一个错误,表明它不能在用户事务内使用。 (我不创建事务,但大概已经开始了)。
我该如何克服? 在DbMigration
派生的类中,我似乎没有访问DbContext的权限,因此无法直接访问数据库。
您可以尝试在派生的DbMigrationConfiguration
重写Seed
方法(这是自定义数据库初始化程序中原始Seed方法的最接近替代),但请注意,每次迁移数据库时都会执行此方法,因此,您还必须包括以下检查才能创建函数:他们不存在。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.