2011-11-09 43 views
1

我正在用EF4.1 CodeFirst創建一個模型。我使用:在EF4.1中,如何才能在創建數據庫時創建索引?

Database.SetInitializer(Of dbModel.dbDB2Data)(New DropCreateDatabaseIfModelChanges(Of dbModel.dbDB2Data)) 

而且

MyBase.Database.ExecuteSqlCommand("CREATE INDEX IX_EXPLAN ON DBO.EXPLANS (PROGNAME, BIND_TIME, ACCESSNAME)") 

創建索引。問題是,如果我將ExecuteSqlCommand放在DbContext New子例程中,它會在每次啓動應用程序時執行,即使DB已經存在,然後由於索引已經存在而發生錯誤。如果我把它放在OnModelCreating事件中,我得到以下錯誤:

The context cannot be used while the model is being created. 

所以,我怎麼能有ExecuteSqlCommand做它的事正在創建數據庫,只有當?

+0

這是不祥的 - 發佈5分鐘後最新投票的問題。如果它那麼好,這意味着沒有好的答案? – GilShalit

回答

0

您需要創建自定義數據庫初始值設定項並在初始值設定項的Seed方法中執行SQL命令。創建數據庫時,初始化程序僅調用一次。 Here是具有唯一索引的類似示例。

+0

謝謝,我還沒有嘗試過,但這個例子看起來像我所需要的。 – GilShalit