LINQ to SQL : LINQ for Connected Database







 In-memory collection, xml files, dats set 을 이용한 방법으로 똑같이 SQL Server DB를 이용할 수 있다. LINQ to SQL 은 LINQ project 의 한 부분으로서 Data Base 와 관련된 Object 에 대하여 쿼리, 관리할 수 있다.  LINQ to SQL 은 Data Base Table 과 여러분의 응용프로그램의 domain specific object model 사이의 불일치를 제거하였다. 여러분은 framework 가 여러분의 object 를 탐색하고, 업데이트 하는 동안 자유롭게 object 와 같은 데이터로 작업할 수 있다.

주어진 database 의 객체 모델을 만들기 위하여 클래스는 database entities 에 mapping 되어야 한다. object mapping 을 만드는 방법은 3가지가 있다.
1. 존재하는 객체에 attribute 를 더한다.
2. 자동으로 object 와 mappings 를 생성하기 위하여 지원되는 designer 를 사용한다.
3. command line SQLMetal tool 을 사용한다.





< 예제 만들기 >

1. Adding LINQ to SQL Support

LINQ to SQL 지원을 받기위해선 System.Data.Linq 어셈블리를 참조 시켜야 한다.



코딩의 편의를 위해 다음과 같이 using 선언문을 추가 시킨다.
using System.Data.Linq;
using System.Data.Linq.Mapping; 





2. 사용하려는 DataBase 로의 연결을 생성한다.


서버 탐색기(Server Explorer) 을 연다. 서버 탐색기 트리에 보면 데이터 연결(Data Connections) 노드가 있다. 이곳에 마우스 오른쪽 버튼을 누르면 팝업 메뉴가 나오는데 여기서 연결 추가(Add Connection) 을 선택해 주자.



서버 이름 항목에 콤보 박스를 누르면 연결 할 수 있는 서버 이름이 쫙~ 뜬다. 사용하려는 DB Server 를 선택해 준다.
서버 이름으로 연결 할 수도 있고, 서버의 IP 주소를 직접 입력해도 되는데 IP 주소를 직접 입력하는게 더 정확하다. 해당 서버의 인증 모드를 선택해 주고, SQL Server 인증 사용 이라면 사용자 이름과 암호를 적어준다. 특히, "데이터베이스에 연결" 에서 "데이터베이스 이름 선택 또는 입력" 란에 사용하고자 하는 DB 이름을 적어 주어야 한다. 적지 않는다면 Default 로 master DB 에 연결된다.



성공적으로 연결 되었다면 서버 탐색기에 해당 DB가 보인다.



3. SQL Designer 사용하기
 
SQL Designer 는 여러분이 Query를 원하는 DataBase 로 부터 table 의 metadata 를 보거나, 설정할 수 있게 해준다. SQL Designer 의 Command Line 버전은 SqlMetal 이라는 tool 이 있다. SqlMetal 은 Vistual Studio 와 .NET Framework 의 구성요소로서 설치된 위치는 %ProgramFiles%\Microsoft SDKs\Windows\v6.0A\bin 이다.


솔루션 탐색기(Solution Explorer) 에서 " 추가 → 클래스 " 를 선택한다.



"데이터" 항목에서 "LINQ to SQL 클래스" 를 선택한다.



이것이 " SQL Designer " 이다.



솔루션 탐색기에 몇가지 변화가 생기는데
DataClasses1.dbml 파일이 프로젝트에 추가 된다. 또한 그 하위에 DataClasses1.dbml.layout
   DataClasses1.designer.cs 파일이 추가 된다. 
- SQL Designer 에 원하는 Table 을 드래그 앤 드롭 하면 Object Releation Mapping(ORM) 이 생성된다. ORM
  은 Database 의 해당 Table 과 해당 Table 클래스 사이를 연결시켜 주며 SQL Designer 가 생성시켜 주고,
  DataClasses1.designer.cs 파일에 위치하게 된다. 이 객체는 entity class 라고 불리며, 연결시킨 Table 을 마치
  프로젝트 안의 객체를 사용 하듯이 data 와 field 에 접근할 수 있도록 해준다.
- 또한 DataClasses1.desinger.cs 파일안에 DataContext 객체가 생성된다. 이 클래스는 연결시킨 Table 의 data
   와 field 에 쉽게 접근할 수 있게 해주며, 자동적으로 database 에 접근할 수 있게 해준다.
- app.config 파일이 프로젝트에 추가된다. 이 파일은 해당 database 를 위한 자동적으로 생성된 ConnectionString
   이 포함되어 있다.

위와 같은 것들은 2가지 장점을 제공해 준다.
- database 에 자동적으로 연결할 수 있게 도와준다.
- 이것은 마치 프로젝트의 포함된 객체인 것 처럼 database table 에 접근할 수 있게 도와준다.




서버 탐색기에서 사용하려고하는 DB Table 을 마우스 왼쪽 버튼으로 SQL Designer 로 드래그 앤 드롭을 한다.
해당 테이블의 디자인을 볼 수 있다.





4. LINQ 사용 예
DataClasses1DataContext db = new DataClasses1DataContext();
db.Log = Console.Out;
var query = from c in db.tbOrgChart
                  where c.DEPTH == 3
                  select c;
            
dataGridView1.DataSource = query.ToList();






5. 출력 예








cf) Connect to a SQL Database and Use the LINQ to SQL Designer
http://blogs.msdn.com/charlie/archive/2007/11/19/connect-to-a-sql-database-and-use-the-sql-designer.aspx

Posted by six605
,