2012-04-21 86 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