2012-01-10 1 views
5

내가 점점 오전 전체 오류에 추가되어 있는지 확인은 이것이다 : 데이터베이스 모델 메타 데이터가 포함되어 있지 않기 때문에SQL 서버 2008 : IncludeMetadataConvention가 DbModelBuilder 규칙

모델의 호환성을 확인할 수 없습니다. IncludeMetadataConvention가 DbModelBuilder 규칙에 추가되었는지 확인하십시오.

SQL Server Compact를 사용해 보았지만 정상적으로 작동하지만 호스팅 공급자는 전용 서버에 대한 CE 만 지원하므로 공유 계획에 있으므로 SQL Server 2008을 사용하고 있습니다. db 형식은 다음과 같습니다.

<connectionStrings> 
    <add name="DBContext" 
     connectionString="Data Source=1.1.1.1;Initial Catalog=dbname;User Id=user;Password=pass;" 
     providerName="System.Data.SqlClient"/> 
    </connectionStrings> 

또한 Application_Startup에서 실행되는 DatabaseInitializer가 있습니다. 추가 코드가 필요하면 알려주세요. edmx 데이터 모델을 만들지 않았으므로 EF Code First를 사용하고 있습니다.

이니셜 라이저 코드가 변경됨 데이터베이스를 항상 삭제하지만 이제는 CREATE DATABASE 권한이 데이터베이스 '마스터'에서 거부되었습니다. 나는 이것을 사용할 초기 카탈로그를 말할 때 왜 이것을 얻는 지 모르겠다.

내가 지금은 SetInitializer에 null을 전달하고, 그러나 지금 나는 다음과 같은 오류가 발생합니다 :

수 없습니다 로그인에서 요청한 데이터베이스 "DBNAME". 로그인에 실패했습니다. '사용자'사용자가 로그인하지 못했습니다.

여전히 위에서 설명한 연결 스트링을 사용하고 있습니다.

답변

4

I changed the initializer code Drop the database always, but now I get the error, CREATE DATABASE permission denied in database 'master'. I don't know why I get this when I telling it the Initial Catalog to use.

데이터베이스를 직접 만들 수있는 권한이 거의 없기 때문에 공유 호스팅에서이 작업을 수행해서는 안됩니다. 데이터베이스는 호스팅 제공 업체의 특수 인터페이스에서만 만들 수 있습니다. SQL 서버를 사용하면 소유하고있는 데이터베이스를 삭제할 수 있지만 일단 삭제하면 사용 권한이 사라지고 데이터베이스를 만들 권한이 없으면이를 다시 만들 수 없습니다 (이 권한이없는 공유 호스팅에서).

I am passing in null to the SetInitializer for now, but now I get the following error:

너무 늦었습니다. 데이터베이스가 삭제되었습니다. 호스팅 공급자 인터페이스를 통해 만들거나 호스팅 제공 업체에 문의하여 다시 만들어야합니다.

I also have a DatabaseInitializer that runs in Application_Startup.

모든 사람들은 데이터베이스를 만들 것으로 예상하기 때문에 공유 호스팅에서 기본 제공 데이터베이스 초기화 프로그램을 사용할 수 없습니다. custom initializer을 사용하여 기존 데이터베이스에 테이블을 채울 수 있습니다.

+0

나는 이걸 밟아 가면서, 내가 말하는 모든 것과 일어난 일을 깨달았다. 이제 데이터베이스를 만들었더라도 내 테이블 Movies가 생성되지 않습니다. dbo.Movies가 유효하지 않은 개체라는 것입니다. 나는 코드 – Xaisoft

+0

에 DbSet Movies {get; set;}를 가지고 있습니다. 마지막 단락에서 설명합니다. 기본 제공 데이터베이스 초기화 프로그램은 데이터베이스 및 테이블 만 작성할 수 있습니다. 기존 데이터베이스를 테이블로 채워서 데이터베이스가 여전히 비어 있습니다. –