2013-02-20 2 views
6

원래 기존 데이터베이스에 연결하는 EF 코드가 처음 설정되었습니다. 이것은 잘 작동했다.EF 코드 첫 번째 - 데이터베이스 생성 - 사용자가 로그인하지 못했습니다.

그런 다음 POCO에 몇 가지 변경을 가하고 코드가 먼저 새 데이터베이스를 생성하도록 결정했습니다.

오류 : 로그인 요청한 데이터베이스 "MyDatabase \"을 열 수 없습니다. 로그인에 실패했습니다. \ r \ n 'DOMAIN \ username'사용자가 로그인하지 못했습니다.

나는 이전 데이터베이스를 삭제,하지만 난 연결 문자열을 변경하지 않은 : 내 로컬 컴퓨터에

<add name="MyDatabaseContext" connectionString="Data Source=localhost;Initial Catalog=MyDatabase;Integrated Security=True;" providerName="System.Data.SqlClient" /> 

나는 SQL 서버 2008 인스턴스가를 내 도메인 사용자 이름이 "시스템 관리자"역할입니다.

다양한 데이터베이스 이니셜 라이저를 시도하고 모두 동일한 오류가 발생합니다. 첫 번째 쿼리 호출에서는 실패하지만 코드는 먼저 데이터베이스를 만들지 않습니다. 연결 문자열을 이전 데이터베이스의 복사본 (변경 전)으로 지정할 수 있으며 DropCreateDatabaseAlways 이니셜 라이저를 지정한 경우에도 이전 스키마 인 경우를 제외하고는 정상적으로 실행됩니다. 이것은 처음부터 코드로 작업하는 제 가정 기계에서 경험 한 것을 따르지 않는 것이 의미가 없습니다.

Visual Studio 2012 및 EF5를 사용하십시오.

코드를 먼저 생성하여 새 데이터베이스를 생성 할 수 있어야합니다. 무슨 일 이니?

답변

8

발견 나는 데이터베이스 초기화 프로그램을 재정의하는 DbContext 클래스에 정적 생성자가 있습니다.

static MyDbContext() 
     { 
      Database.SetInitializer<MyDbContext>(null); 
     } 

코드 첫 번째 리버스 엔지니어링 엔지니어가 기존 데이터베이스를 덮어 쓰지 않도록 코드를 삽입합니다. 전환 할 때 나는 그것에 대해 생각하지 않았습니다.

다른 사람이 도움이되기를 바랍니다.

관련 문제