2011-08-08 3 views
0

기억이 안나는 아주 간단한 질문입니다. 로컬 시스템 (각 개발자마다 고유), 개발 및 생산이라는 세 가지 환경이 있습니다. 연결 문자열은 구성 파일 (web.config가 아니라 web.config가 파일을 가리킴)에 있습니다. 주어진 시간에 오직 하나만 활성화됩니다 (다른 두 개는 주석으로 처리되며 세 개는 모두 같은 이름이지만 각 환경에 대해 다른 값을 갖습니다).다른 환경/연결 문자열을 사용하는 Linq를 사용하는 방법

데이터 액세스 (즉, Linq 생성 CS 파일의 정적 GetByProperty 메소드)를 처리하기 위해 ActiveRecord 패턴의 기본 버전을 사용하고 있습니다. 우리 모두가 디자이너와 대면 할 필요없이 Linq 클래스를 사용할 수 있도록하려면 DataContext을 새로 만들 때 연결 문자열 (예 : ConfigurationManager.AppSetting["TheConnectionString"])을 사용하여 해당 구성 설정을 전달해야합니다. 요청 당 컨텍스트를 새롭게 만드는 방법을 사용하려고합니다. 내가 모든 연결 문자열을 모든 메서드로 반복 할 것이므로 DRY 이외의 다른 문제가 있습니까? 매번 연결 문자열을 전달해야한다는 것을 알고 있어야합니까? 아니면 표준 작업 절차입니까?

답변

1

가장 좋아하는 것 중 두 가지를 선택했습니다 (ActiveRecord 및 LINQ to SQL). ;-) 관계없이, 코드를 팩토리 메소드 (또는 유사)로 옮겨 DRY 문제를 피할 수있다. 약간의 리팩토링 및 재구성 작업을 수행해야하지만 나중에이 문제를 해결할 수 있습니다.

연결 문자열을 환경에 맞게 변경하는 것은 LINQ, DataSets, EF 또는 다른 방법을 사용하는지에 관계없이 상당히 표준적인 절차입니다. 실제 지속 저장소의 위치는 구성 문제입니다.

+0

그래, NHibernate + 저장소 패턴을 선호 하겠지만 작업에 "너무 복잡하다"고 외국 주제를 소개합니다. LINQ를 사용할 승인을 얻은 것은 운이 좋았습니다 .. Stored Procs 및 DataSets X- ( –

+1

LINQ는 위대한 추상입니다. 데이터 액세스 기술로서 데이터를 반복하는 객체를 좋아합니다. EF 팀이 "뒤에서 뛰다"때문에 크게 던져졌고, 끔찍한 죽음에 이르길 바란다. "나는 승인을 얻으려는 것"이라는 이슈를 이해한다. 나는 너무 많은 사람들이 하드 코드를 사용하기 때문에 최대한 많은 구성을 사용하는 편이 낫다. (그리고 끔찍한 죽음을 맞이할 것인가?) –

+0

네, 하드 코더들에게 죽음을! –

관련 문제