저는 멀티 패밀리 Asp.Net MVC 3 웹 응용 프로그램을 만들고 DB 모델에 대해 EF4.1 코드를 먼저 사용하고 있습니다.먼저 EF4.1 코드에서 Web.config의 ConnectionString 이름을 재정의하는 방법
개발을위한내가 App_Data에 SqlServerCE를 사용하는 것이 행복 해요, 생산이 연결 문자열에 대한 기본 코드 첫번째 외모로, 2008 년
내 상황이 "MyModels"라고 말 SQL 서버로 이동합니다 Web.config에서 "MyModels"라고합니다. SQL2008에서 App_Data에있는 파일을 사용하거나 데이터베이스에 액세스하기 위해 변경하라는 메시지가 표시 될 수 있습니다. 지금까지 괜찮아.
멀티 테넌시 때문에 SqlServerCE 파일 이름이 세입자의 고유 ID와 일치하도록하고 싶습니다 (App_Data에는 "client_x.sdf", "client_y.sdf"가 있으므로 SQL Server 2008에는 별도의 데이터베이스가 있습니다.). 나는이 다른 데이터베이스로 이동하는 법을 배울 수 없다.
DbContext에서 상속받은 MyModels을 사용하고 (Web.config의 '자리 표시 자'conn 문자열을 사용하고 "{clientId}"를 고유 ID로 바꾼) 연결 문자열을 제공하려고 시도했습니다. MyModels 생성자의 연결 문자열 :
base.Database.Connection.ConnectionString = xxx;
그러나 이것은 결코 작동하지 않습니다.
코드, 데이터베이스를 추적 (.!이 내가 생각하는 SQL Server에 연결을 시도 그래서 아직 SqlServerCE를 사용하는 '구성'아니에요 제안 등)
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)
: 나는 항상 다음과 같은 오류가 .ConnectionString은 Web.config에서이 시점에서 읽지 않았으므로 검색하고 바꿀 수 없으며 나중에 파이프 라인의 '자리 표시 자'conn 문자열로 덮어 쓰게됩니다.
나는 이것이 아주 분명해야하고 나는 '훅'을 찾을 수 없다고 생각한다. 아무도 도와 줄 수 있습니까?
나는 그것을 알아 냈습니다. 왜냐하면 저는 약간 바보 같기 때문입니다. 죄송합니다! ConnectionString을 Web.config에서 connectionString으로 설정하려고했지만 실제로 DbConnectionStringBuilder를 사용하여 빌드해야합니다. 빌더의 ConnectionString 특성을 바꾼 다음 빌더를 사용하여 EF conn 문자열을 설정하면 작동합니다. 이걸 표시로 해결할 수 있습니다. 제발! –
귀하의 코멘트 내용을 답변으로 작성하여 동의하십시오. –
Ladislav Mrnka가 말했듯이, 당신 자신의 질문에 대답해도 괜찮습니다.나는 당신이 당신의 자신의 대답을 "the"답으로 표시하기 전에 하루 정도 기다려야한다고 믿는다. 그러나 그것은 허용된다;) –