2016-09-17 33 views
1

我的問題最初是:DropCreateDatabaseIfModelChanges無法更新數據庫?EF:遷移.Configuration的種子與DropCreateDatabaseAlways的種子?

但我改變了它,因爲這兩種方法的作用對我來說比較模糊 。

...................

我所知道的,到目前爲止,使用DropCreateDatabaseIfModelChanges將重新創建數據庫時的模式變化(IfModelChanges)。這意味着我不必擔心遷移,因爲無論如何它都會重新創建數據庫,對吧? 我首先創建一個類DataInitializerDropCreateDatabaseIfModelChanges繼承,並與初始數據實現的Seed方法,並從Main方法稱爲Database.SetInitializer(new DataInitializer()); ,但我仍然得到錯誤有關模型變化,我要補充遷移(因爲我退學來自實體的屬性以測試數據初始化)。 這是初始化類:

public class DataInitializer : DropCreateDatabaseIfModelChanges<BlogContext> 
    { 
     protected override void Seed(BlogContext context) 
     { 
      var blogs = new List<Blog> 
      { 
       new Blog {FollowersCount=456, Name="ABC", Url="abc.com" }, 
       new Blog {FollowersCount=789, Name="DEF", Url="def.com" }, 
       new Blog {FollowersCount=246, Name="GHI", Url="ghi.com" }, 
       new Blog {FollowersCount=135, Name="JKL", Url="jkl.com" }, 
       new Blog {FollowersCount=258, Name="MNO", Url="mno.com" }, 
      }; 
      blogs.ForEach(x => context.Blogs.Add(x)); 
     } 
    } 

這是我的問題:它的工作原理,如果遷移啓用,如果我在執行初始數據 - 其中之一將是Configuration類種子的方法會發生什麼叫(我有初始化與配置類已經數據的種子法)後,我加入遷移

,它引發此錯誤(I是否稱爲SetInitializer與否):

已經有一個數據庫中名爲'Blogs'的對象即

回答

0

無論何時更改模型,您都必須告訴web.config文件使用您的初始化類。在web.config文件的entityFramework標籤中添加以下代碼。希望它能工作..

<contexts> 
    <context type="YourProjectName.BlogContext,YourProjectName"> 
     <databaseInitializer type="YourProjectName.DataInitializer , YourProjectName" /> 
    </context> 
</contexts> 
+0

我在代碼中已經 –