我成功創建了我的第一個使用SQL Server CE的實體框架代碼第一個項目。數據庫表是自動創建的,一切正常。在SQL Server 2008上設置實體框架代碼第一個數據庫
然後,我更改了連接字符串,指向我創建的SQL Server數據庫,並期望它自動生成表。它沒有,而是抱怨表不存在。
經過一番閱讀後,我發現我需要爲我的App_Start
方法添加一個初始化程序。
我想:
// Method 1
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<EFContext>());
但這並沒有在第一次工作,因爲它無法找到一個EdmMetaData表發現,如果模型發生了變化。
所以我嘗試添加:
// Method 2
Database.SetInitializer(new CreateDatabaseIfNotExists<EFContext>());
但這並沒有工作,因爲我已經創建了數據庫,當我刪除的數據庫它仍然沒有工作,因爲我是在註銷用戶因爲沒有創建數據庫特權。
我終於嘗試:
// Method 3
Database.SetInitializer(new DropCreateDatabaseAlways<EFContext>());
這工作,但我真的不希望每次都砸分貝。所以一旦運行並添加EdmMetaData表,我用方法1替換它,現在工作正常。
儘管此方法有效,但它並不像我使用SQL Server CE時那麼優雅,而且我還沒有發現有人建議您使用此方法。
所以,我錯過了一些東西,有沒有更簡單,更優雅的方式來做到這一點?