首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在使用EF (5)代码第一次移动时执行附加DB初始化

如何在使用EF (5)代码第一次移动时执行附加DB初始化
EN

Stack Overflow用户
提问于 2012-10-30 14:56:58
回答 1查看 525关注 0票数 1

我正在将ef-code-first应用程序移动到代码优先迁移模型,并将数据库初始化程序从DropCreateDatabaseIfModelChanges切换到MigrateDatabaseToLatestVersion

在最初的初始化器中,我创建了一些用户定义的函数等,并对数据库配置进行了更改(例如,SET AUTO_CLOSE OFF)。所有这些都是通过直接针对DB执行SQL来实现的,因为通过EF不支持SQL。

现在,我已经转移到迁移模型中,我试图通过向生成的Up类的DbMigration方法中添加代码来做很多相同的事情。此代码使用Sql方法注入SQL。

但是,结果是出现了各种错误,例如:

  • 创建用户定义函数的SQL会导致错误,说明CREATE FUNCTION语句必须在批处理的开头。
  • 我的ALTER DATABASE语句会导致错误,说明它不能在用户事务中使用。(我不创建事务,但可能已经启动了一个事务)。

我怎样才能克服这一切?在DbMigration-derived类中,我似乎无法访问DbContext,因此无法直接访问数据库。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-31 08:31:29

您可以尝试在派生的Seed中重写DbMigrationConfiguration方法(这是自定义数据库初始化器中原始种子方法最接近的替代方法),但请注意,每次迁移数据库时都会执行此方法,所以您还必须包括创建函数的检查,只有在不存在函数的情况下。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13141710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档