2011-03-24 2 views
11

데이터베이스를 생성하지 않습니다 Guthrie의 블로그에서 데이터베이스 스키마를 작성/업데이트하기 위해 응용 프로그램 시작시이 코드를 실행해야합니다.엔티티 프레임 워크 코드는 첫째, 여기 내 솔루션 보이는 방법의 개요입니다

Database.SetInitializer<PizzaSoftwareData>(new CreateDatabaseIfNotExists<PizzaSoftwareData>()); 

나는 PizzaSoftware.UI의 Program.cs에서 해당 코드 행을 실행 중입니다.

namespace PizzaSoftware.UI 
{ 
    static class Program 
    { 
     /// <summary> 
     /// The main entry point for the application. 
     /// </summary> 
     [STAThread] 
     static void Main() 
     { 
      Application.EnableVisualStyles(); 
      Application.SetCompatibleTextRenderingDefault(false); 
      Database.SetInitializer<PizzaSoftwareData>(new CreateDatabaseIfNotExists<PizzaSoftwareData>()); 
      Application.Run(new LoginForm()); 
     } 
    } 
} 

데이터베이스에 테이블이 생성되지 않은 이유는 누구에게 말해 줄 수 있습니까?

여기 내 app.config 파일에서 연결 문자열 : 당신이 데이터베이스에 액세스해야하는 경우

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <connectionStrings> 
    <add name="PizzaSoftwareData" 
     connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=SaharaPizza;Integrated Security=True;Pooling=False" 
     providerName="System.Data.Sql" /> 
    </connectionStrings> 
</configuration> 

답변

26

이니셜이 실행됩니다. 당신은 시작 중 하나를 사용하는 응용 프로그램에 대한 데이터베이스를 만들려면 :

context.Database.Initialize(true); 

또는 초기화를 사용하여 호출하지 않습니다

context.Database.CreateIfNotExists(); 
+0

여기서 woul 이 선은 어때? – mmcrae

+0

@ mmcrae : 응용 프로그램 초기화. 응용 프로그램 유형에 따라 다릅니다. –

+0

제 경우에는 어떻게 든 Database.Initialize (true)가 예외를 throw합니다. 'System.StackOverflowException'유형의 예외가 발생했습니다. Database.CreateIfNotExists() - 정상적으로 작동합니다. –

4

를 대신 주요 방법이 코드를 넣는 :

Database.SetInitializer<PizzaSoftwareData>(new CreateDatabaseIfNotExists<PizzaSoftwareData>()); 

DBContext에 넣기 :