2013-04-11 1 views
3

나는이 같은 VS 2012 솔루션 설치를 개발하는 동안 나는 EF에 백업 데이터베이스로 LocalDB를 사용하려고합니다. MVC & WCF 프로젝트는 모두 EF 모델을 사용하여 데이터베이스의 데이터에 액세스합니다. 모든 프로젝트 (MVC, WCF, & 테스트)에서 동일한 LocalDB 인스턴스를 공유하고 싶지만 web.config의 설정 권한을 얻지 못하는 것 같습니다.솔루션의 모든 프로젝트에서 LocalDB 인스턴스를 공유하는 방법은 무엇입니까?</p> <ul> <li>EF 모델 프로젝트</li> <li>EF 모델 테스트 프로젝트</li> <li>ASP.NET MVC 4 개 응용 프로그램</li> <li>WCF 데이터 서비스 프로젝트</li> </ul> <p>:

저는이 프로젝트 설정이 개발자 컴퓨터에서 가능하도록하고 싶습니다. IE는 절대 경로가 아닙니다.

테스트 프로젝트는 &이라는 데이터베이스를 c : \ users \\. mdf에 생성합니다. MVC & WCF 프로젝트는 파일이 AppData 폴더에 상주 할 것으로 예상합니다. 필자는 필요에 따라 수동으로 복사했지만 앱이 동기화되지 않는 데이터를 변경함에 따라 명확하게 복사했습니다.

프로젝트가 상대 경로와 동일한 인스턴스를 공유하도록 설정하는 방법에 대한 제안이나 예가 있습니까?

답변

1

minhcat_vo에 대한 예제를 함께 사용하면 해결책을 찾아 냈습니다.

DbContext에서 파생 된 유형 이름 (또는 주석으로 설정 한 이름)과 일치하는 명시 적 연결 문자열을 지정하지 않으면 발생하는 문제가 발생했습니다. 동작은 프로젝트 유형에 따라 다릅니다.

  • 테스트 프로젝트에서는 \\. mdf에있는 MDF 파일과 함께 DbContext의 FQDN과 함께 로컬 db 카탈로그를 사용합니다. 하는 ASP.NET MVC 프로젝트에서
  • 그것은 MySQL을 내 EF 프로젝트를 이동하는 동안이 솔루션에 발견

.MDF \ app_data \에서 MDF 파일을로드하려고 시도합니다. MySQL EF 공급자는 어떤 상황에서도 DefaultConnection 연결 문자열로 폴백하지 않을 것입니다 (귀하의 DbContext가 명시 적으로 선택하지 않았다면). MySQL-EF가 작동하도록하려면 컨텍스트와 일치하는 연결 문자열을 넣어야했습니다. 이것은 내가 찾고 있던 해답을 찾는데 도움이되었다.ThingsContext 내 프로젝트에 대한 DbContext의 인스턴스

<add name="ThingsContext" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=Things;Integrated Security=SSPI" /> 

: 내 모든 프로젝트에 대해 다음 연결 문자열을 사용하여 모두 동일한 MDF 파일/LocalDB 인스턴스를 공유 할 수 있습니다. 내 예제 솔루션을 볼 수 있습니다. @https://github.com/drdamour/SharedLocalDB

+0

나는 당신의 해결책을 시도했다. 그것은 작동합니다. 질문은 이제 파일의 위치는 어디입니까? MDF는 버전 제어 (예 : GIT)에 추가 될 수 있습니다.이 솔루션은 원격 DB를 사용합니다. 그것은 SQL Express를 사용하는 것과 같습니다 ... – firepol

+0

정확히 내가 뭘 찾고 있었는지, 고마워. @firepol 내 파일은'c : \ Users \ myusername \ mydatabasename.mdf'에 있습니다. Visual Studio의 SQL Server 개체 탐색기에서 데이터베이스 속성을 엽니 다. 경로는 ** 현재 연결 매개 변수 ** 아래에 지정됩니다. –

0
나는 모든 프로젝트 (MVC, WCF, & 테스트)에서 동일한 LocalDB 인스턴스를 공유하고 싶습니다하지만 지금

그것은 아마 당신의 연결 문자열의에서 web.config의 설정을 얻을 수없는 것

문제.

프로젝트가 상대 경로와 동일한 인스턴스를 공유하도록 구성하는 방법에 대한 제안이나 예가 있습니까?

예, 각 프로젝트의 web.config에서 상대 경로를 사용할 수 있습니다. 그러나 ConfigurationManager을 사용하여 처리 할 수 ​​있습니다.

+0

제안하시는 내용의 예를 제공해주십시오. 구현을 .config 파일로 제한하는 것을 선호합니다. –

+0

나는 이것이 귀하의 사례에 대한 좋은 예가 될 것이라고 생각합니다. http://stackoverflow.com/a/1541978/861114 –

+0

나는 당신이 말한 것을 해봐야한다고 생각한다. 그것은 당신이 생각하는 것처럼 쉽지 않기 때문이다. 다른 프로젝트 유형은 연결 문자열을 다르게 요구합니다. 나는 예제 프로젝트를 공유하려고 노력할 것이다 –

0

잘못된 것일 수 있습니다. 한 번에 하나의 응용 프로그램에만 액세스 할 수 있습니다. 한 데이터베이스가 여러 응용 프로그램에서 동시에 액세스 할 수있게하려면 ExpressDB SQL Server에 LocalDB를 연결하십시오. Express에서 각 응용 프로그램에 대한 양식 인증을 사용하여 사용자를 작성하십시오. ConnectionString을 변경하여 sql에 사용자 이름과 암호를 표시하십시오. 너는 가야한다.