2012-07-09 3 views
0

SQL Server Compact 4.0 데이터베이스를 사용하도록 응용 프로그램을 테스트하고 있습니다. 응용 프로그램은 데이터베이스가있는 경우 데이터베이스를 사용하거나 존재하지 않는 경우 Entity Framework 4.3 마이그레이션을 사용하여 데이터베이스를 작성합니다.Entity Framework 4.3을 사용하는 동안 SQL Server Compact 4.0 파일을 수동으로 삭제할 때 파일을 찾을 수 없음 오류가 발생했습니다.

그러나 프로그램이 유휴 상태 일 때 파일을 삭제 한 다음 데이터베이스 읽기를 유발하는 작업을 수행하면 File not found 오류가 발생합니다. 이것은 현실 세계 시나리오는 아니지만 무슨 일이 벌어지고 있는지 이해하고 싶습니다.

백그라운드에서 어딘가에 프레임 워크가 데이터베이스가 만들어 져야하는지 여부에 대한 점검이 이미 있다는 사실을 추적하고있는 것처럼 보입니다. 나는 그것이 정말로 사실이라면 나는 그것을 좋아하는지 확신하지 못한다.

데이터베이스가 처음 액세스 될 때 생성되지만 프로그램 실행 중에 다시 생성되지 않는 이유는 무엇입니까? (여기에는 여러 가지 좋은 이유가 있지만 이해가 필요한 부분을 알고 싶습니다.)

답변

1

데이터베이스 생성은 EF 초기화의 일부이기 때문에 초기화는 일반적으로 컨텍스트가 처음 데이터를 검색하거나 유지하는 데 사용될 때 모든 컨텍스트 유형마다 한 번만 발생합니다. 응용 프로그램을 실행할 때 데이터베이스를 삭제하는 것은 EF 유스 케이스가 아니므로이 시나리오를 지원하려면 직접 처리해야합니다. dbContext.Database.Initialize(true); 초기화는 매우 비싼 작업이며 앱에 스레드가 없기 때문에 실제 작업없이이 작업을 실행하지 마십시오. 초기화가 실행 중일 때 데이터베이스에 액세스 할 수 있습니다.