繁体   English   中英

使用EF(5)代码优先迁移时如何执行附加的数据库初始化

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM