2012-04-21 89 views
1

我将我的项目从数据库优先迁移到代码优先。EF CodeFirst - 在数据库创建后创建索引

实体框架做一些不错的工作,创建我的新数据库(应该模仿旧的)。
我正在使用数据注释和流利API的组合来描述我的表格。

我的数据库有一些索引,我希望实体框架也可以创建它们。看起来旧的方法是定义你自己的初始化程序并使用自定义的T-SQL。

但是现在我们有EF迁移,应该更容易这样做。
我似乎无法弄清楚如何将CreateDatabaseIfNotExists>与自动迁移相结合来创建索引。我尝试过使用MigrateDatabaseToLatestVersion <>,但似乎并没有在创建数据库后执行迁移。

现在我们有Entity Framework 4.3,创建数据库创建索引和约束的正确方法是什么?

+0

你说“数据库创建后”和“CreateDatabaseIfNotExists”这是否意味着你想在现有的数据库上做到这一点? – dknaack 2012-04-21 08:59:53

+0

没有抱歉,我的意思是在Entity Framework创建我的数据库之后。所以我从没有数据库开始,然后我想EF来创建我的基本结构,然后我想索引。 – Zyphrax 2012-04-21 09:01:13

+0

我不知道ef会为你创建索引;只是提供一种自己发布命令的方式。 – 2012-04-21 09:15:09

回答

5

如果您想使用迁移,请不要使用CreateDatabaseIfNotExists。从一开始就使用MigrateDatabaseToLatestVersion - 它也会创建你的数据库。将索引创建代码(调用CreateIndex)放入迁移类的Up方法中。

如果您已经有了现有的数据库并且想要使用迁移,则必须首先使用create initial migration