2011-03-31 63 views
27

我正在嘗試實體框架代碼第一。我似乎無法找到用於WPF 4.0中的RecreateDatabaseIfModelChanges的程序集/名稱空間。這是僅限於ASP.NET的功能嗎?如果不是,我應該參考什麼組件?是否在WPF中提供了RecreateDatabaseIfModelChanges?

這裏是我的代碼:

using System; 
using System.Data.Entity; 
using System.Windows; 
using CodeFirstTester.Models; 

namespace CodeFirstTester 
{ 
    public partial class App : Application 
    { 
     static App() 
     { 
      // this fails: 
      Database.SetInitializer(new RecreateDatabaseIfModelChanges<NerdDinners>()); 

      // The type or namespace name 'RecreateDatabaseIfModelChanges' 
      // could not be found (are you missing a using directive or 
      // an assembly reference?)     

      using (var nerdDinners = new NerdDinners()) 
      { 
       var dinner = new Dinner() 
       { 
        Title = "Party at Scott's House", 
        EventDate = DateTime.Parse("12/31/2010"), 
        Address = "Building 40", 
        HostedBy = "[email protected]" 
       }; 
       nerdDinners.Dinners.Add(dinner); 
       nerdDinners.SaveChanges(); 
      } 
     } 
    } 
} 
+0

我找不到關於該類的任何MSDN文檔。你確定,它把它變成RTM嗎? – 2011-03-31 06:38:46

+2

我發現這個:http://www.scottleckie.com/2011/03/rc-of-entity-framework-4-1-including-ef-code-first-is-released/。它說,這個策略現在被稱爲'DropCreateDatabaseIfModelChanges',但是我在MSDN上沒有找到任何有關......奇怪的 – 2011-03-31 06:44:31

+1

@Daniel Hilgarth:文檔在這裏:http://msdn.microsoft.com/en- us/library/gg696142%28v = VS.103%29.aspx列出了'IDatabaseInitializer'的三個可用實現,包括'DropCreateDatabaseIfModelChanges'。 – Slauma 2011-03-31 12:58:00

回答

51

初始值將被稱爲DropCreateDatabaseIfModelChanges。它可以在EntityFramework.dll(EF 4.1)的System.Data.Entity命名空間中找到。

+2

謝謝拉迪斯拉夫!我想他們在從CTP轉到RC時重新命名了戰略。 – devuxer 2011-03-31 18:25:38

+1

Aaaaah ...愚蠢的重命名!感謝你的回答!! – 2011-05-16 20:35:40