LINQ to SQL
비주얼 스튜디오에서 편리하게 DB에 연결하고 Table, SP를 사용하는 Linq to SQL이 있습니다.
Drag n Drop으로 바로 연결정보까지 들어가고 DataContext가 자동으로 생성됩니다.
DA 영역에서 바로 호출해서 사용할 수 있습니다.
하지만 실무에서 처음에 ConnectionString이 자동으로 설정되어서 편리했던 부분이 불편함으로 다가왔습니다.
설정되는 ConnectionString은 서버탐색기에 있는 값을 가져오게 되는데, 여러 환경에 배포해야 하는 상황에서는 동적으로 ConnectionString이 변경되어야 합니다.
여러 방법을 구글링했지만 제가 사용했던 방법이 가장 직관적이고 편리하다고 생각하여 글로 정리합니다.
LINQ to SQL 클래스를 추가
LINQ to SQL에 대한 사용법은 본문에서는 생략하고 별도의 글로 작성하겠습니다.
LINQ to SQL 클래스를 생성하면 {ClassName}DataContext 이름의 클래스가 자동생성됩니다.
서버 탐색기를 통해 생성된 기본 연결정보는 Settings를 통해 관리된다.
public DBDataContext() :
base(global::TestProject.Properties.Settings.Default.DBConnectionString, mappingSource)
{
OnCreated();
}
하지만 Settings에 있는 값을 동적으로 관리하기에는 어려움이 있다.
그래서 Web.Config에 있는 값으로 설정되게끔 하고 싶었다.
내가 해결한 방법은 partial class로 생성자를 따로 만드는 것이다.
클래스를 따로 생성하여 아래와 같이 작성한다.
(dbml을 클릭한 후 F7을 눌러 하위에 생성하거나 따로 새로 만들어도 된다.)
DataContext 생성자 작성
public partial class DBDataContext
{
public DBDataContext()
: base(System.Configuration.ConfigurationManager.ConnectionStrings["DBConnectionString"].ConnectionString, mappingSource)
{
OnCreated();
}
}
다음으로 중요한 것은 LINQ to SQL 디자이너에서 연결정보를 없애는 것이다.
디자이너 속성에서 Connection을 (없음)으로 변경해준다.
변경 후에는 designer.cs 파일이 재생성되면서 매개변수가 없는 생성자가 사라져 있을 것이다.
DBML 속성 내 Connection 정보 삭제