2012-02-16 2 views
1

VS 2010 (C# .Net 4.0)에서 Linq2Sql을 사용하여 데이터베이스 액세스를 처리하고 있습니다. 이 모든 것이 훌륭하게 작동합니다.특정 Linq2Sql 디자이너 코드 재정의 방지

DataContext이 웹 응용 프로그램 (데이터 액세스 레이어)과 별도의 레이어에 있기 때문에 호출하는 웹 응용 프로그램 web.config 파일에서 연결 문자열을 사용하도록 구성했습니다.

최종 결과로 Linq2Sql 디자이너 파일 (DB.designer.cs)을 변경해야하며 첫 번째 생성자 인수 (기본적으로 DB 연결 문자열의 문자열)를 대체하고 다음과 같은 호출로 대체해야합니다 다음 :

System.Configuration.ConfigurationManager.ConnectionStrings["CS"].ConnectionString 

문제는 나는 현재하고있을 것 같다 것은 내가 GUI 디자이너를 통해 디자이너 업데이트 (드래그 및 부품을 드롭) 때 다시 하드 코딩 연결 문자열이 코드 변경을 재설정한다는 것입니다.

누군가가 이것을 막기 위해 설정을 변경할 수 있는지 말해 줄 수 있습니까? 아니면 부분 수업으로 무엇을해야합니까? 아니면 완전히 다른 방법일까요?

답변

2

여기는 partial methods이 유용합니다! 고맙게도, LINQ2SQL DataContext는 여러 유용한 정보로로드됩니다. DataContext의 이름이 AutosDataContext 인 것으로 가정 해 봅시다. DBML 옆에 새 클래스를 만들고 AutosDataContext이라고 부릅니다. 업데이트에에 산책 DBML 디자이너없이 사용자 정의 연결 문자열 로직을 추가 할 수

public partial class AutosDataContext 
    { 
     partial void OnCreated() 
     { 
      this.Connection.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["CS"].ConnectionString; 
     } 
    } 

부분 OnCreated 방법은 DataContext를 인스턴스화 직후 호출되는, 그리고 완벽한 장소를 만들어 다음과 같이 다음을 기입 .

+0

감사합니다. 잘 작동하는 것 같습니다.) – musefan