2013-04-02 4 views
0

MVC4 및 MVC 스캐 폴딩 (링크/자습서 : http://www.codeproject.com/Articles/468777/Code-First-with-Entity-Framework-5-using-MVC4-and?msg=4531106#xx4531106xx)을 사용하여 Entity Framework 5에서 코드 우선을 사용하여 모델에서 데이터베이스를 만듭니다. 따라서 기본적으로 앱을 실행하면 모델이 변경되면 앱이 삭제되고 새 데이터베이스가 만들어집니다. 훌륭합니다. 자, 분명히, 이것은 지역 개발에 아주 좋습니다.Entity Framework 코드 우선 - 로컬 데이터베이스를 만드는 대신 개발이 완료되면 내 응용 프로그램에 프로덕션 데이터베이스를 사용하도록 지시하려면 어떻게합니까?

하지만 내 앱이 제작에 들어갈 때는 어떻게해야합니까? 이 코드를 더 이상 수행하지 말고 GoDaddy에서 호스팅 한 데이터베이스를 사용하도록 내 앱을 지시하려면 어떻게해야합니까? web.config에서 GoDaddy 데이터베이스의 연결 문자열을 변경했지만 작동하지 않습니다. 무슨 일이 일어날 지 코드는 여전히 나에게 알려지지 않은 어떤 이유로 오래된 연결 문자열을 사용하려고 시도합니다. 내 응용 프로그램을 에 가져올 수없는 것 같습니다.은 GoDaddy에서 만든 데이터베이스를 사용합니다. 나는 여기에

가 (단지 내 모델 변경하는 경우,이 경우에) 내 데이터베이스를 자동 생성 내 Application_Start 방법 코드의 라인입니다 .... 코드 - 첫번째 경로를 추락 후회하기 시작 해요 :

System.Data.Entity.Database.SetInitializer(new System.Data.Entity.DropCreateDatabaseIfModelChanges<CapWorx.QuikCap.Models.CapWorxQuikCapContext>()); 
+0

System.Data.Entity.Database에 가지고있는 것처럼. SetInitializer (null); 데이터베이스 구조를 수정하지 않습니다. – Lars

+0

불행히도 인수로 null을 전달할 수 없습니다 ... –

+0

예, 가능합니다. 왜 당신이 할 수 없다고 생각하는지 확신하지 못합니다. –

답변

0

간단한 규칙 (토론/의견에 따라)입니다 -

당신은 '비 정적 ctor에'CapWorxQuikCapContext()가있는 경우 : 기본 ("연결") - 다음 사용해야합니다 그 설정에서 같은 이름을 사용합니다.

그렇지 않으면 연결 문자열의 이름을 Context 클래스과 동일하게 지정해야합니다. 즉 정확히 CapWorxQuikCapContext입니다.

당신이 아닌 경우 - 귀하의 상황처럼 - - 즉, 몇 가지 기본 DB 이름을 - EF/CF가 자신의 '연결'경로를하게하거나 ctor에

1

내 문제에 대한 해결책을 찾았습니다. 이 그것이 내가 몇 가지 샘플 데이터 종자 만 설치 전략의 지점 대에서 CodeFirstSeeder는 관련이없는 것으로

static CapWorxQuikCapContext() 
{ 
    Database.SetInitializer(new CodeFirstSeeder.Xml.DropCreateDatabaseAlways<CapWorxQuikCapContext>()); 
} 

참고 :

원래, 나는 내 문맥의 생성자에서 다음했다. 어쨌든, 위가로 변경 :

public CapWorxQuikCapContext() 
    : base("DefaultConnection") 
{ 
} 

이 "DefaultConnection"라는 연결 문자열을보고 해당 데이터 소스를 사용하여 내 응용 프로그램을 알려줍니다.