문제

LINQ-to-Entiites Queries를 포함하는 맨 위에 리포지토리가있는 데이터 층으로 엔티티 프레임 워크가있는 계층 아키텍처를 사용하고 있습니다. 데이터 계층은 하나의 프로젝트입니다. 그 옆에는 서비스 계층과 인터페이스 (웹 사이트)가 있습니다.

내 웹 사이트가 엔티티 모델의 ConnectionString을 지정할 책임이 있기를 원합니다. 어떻게해야합니까?

DatalAyer 내부에 위치한 Entity Repository에 도달하기 위해 Singleton Method를 사용하고 있습니다.

감사

도움이 되었습니까?

해결책

dal 어셈블리의 app.config에서 생성 된 연결 문자열을 Web.config의 ConnectionStrings 섹션에 복사 할 수 있습니다.

어셈블리 DLL에 연결 문자열을 유지할 수 있지만 웹 사이트에 배포해서는 안됩니다.

전체 연결 문자열을 복사해야합니다. 다음과 같아야합니다.

<add name="DataEntities" connectionString="metadata=res://*/DataModel.csdl|res://*/DataModel.ssdl|res://*/DataModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=xxx;Initial Catalog=xxx;User Id=xxx;Password=xxx;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />

매핑 파일이있는 위치에 대한 모든 정보가 포함되어야합니다.

다른 팁

제 경우에는 L2E 대신 L2S를 사용하고 있지만 권장 사항은 서 있어야합니다. XML 파일에서 피드하는 Generalize Config 라이브러리가 있습니다. 데이터 컨텍스트가 필요한 경우 모든 데이터 객체에는 다음과 같은 메소드가 있습니다. 물론, 원하는 경우 쉽게 템플릿 할 수 있습니다.

private static string _conStr = null;
private static CalendarsAndListsDataContext GetDataContext()
{
    if (_conStr == null)
    {
        _conStr = ConfigurationLibrary.Config.Settings().GetConnectionString("liveConString");
    }

    return new CalendarsAndListsDataContext(_conStr);
}

이제 가장 큰 단점은 연결 문자열 변경에 응용 프로그램을 다시 시작해야하지만 제 경우에는 문제가되지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top