C# O/R 디자이너- LINQ 이용
LINQ LINQ(Language INtegrated Query) ; 닷넷 프로레임워크 3.5에서 지원하는 데이터 다루는 방법 언어에 독입적인 쿼리문 ; 언어(쿼리 대상인 데이터 소스, 쿼리 실행 언어) 쿼리 대상 : SQL 테이블, XML 문서, 오브젝트, 텍스트파일 데이 터 소스에 따라서 문법이 다름 ; 데이터 베이스 (SQL), XML(XPath)
LINQ LINQ 범주 LINQ to Object LINQ to DataSet LINQ to SQL LINQ to Entities LINQ to XML
LINQ의 위치 언어1 VB C# 언어2 LINQ to ADO.NET Object RDB XML LINQ to Object
LINQ의 장점 간결한 구문으로 쿼리 방식을 간소화한다. 꼭 필요한 지시 사항만 밝힘으로써 원하는 데이터를 간편하게 얻을 수 있다. 데이터 소스에 상관없이 일관된 쿼리 문법이 적용된다. 그 자체가 통합을 지향하고 있으므로 일관적이다. 한번 배우면 똑같은 문법을 여러 대상에서 사용 가능하다. 객체 지향적이다. 관계형 데이터베이스는 객체 지향과 거리가 멀지 만 LINQ 를 쓰면 객체 지향의 여러 가지 이점을 취할 수 있다. 강력한 타입을 지원하며 모든 에러를 컴파일 중에 점검할 수 있어 개발 속도가 빨라지고 안정성도 확보된다. 인텔리센스와 디버거의 도움도 받을 수 있다.
메모리 내의 컬렉션을 대상으로 LINQ 실습
정수 배열 ar 에서 3의 배수 출력 from 순회변수 in 데이터 소스 메모리 내의 컬렉션을 대상으로 LINQ 실습 정수 배열 ar 에서 3의 배수 출력 using System; using System.Collections.Generic; using System.Linq; class CSTest { static void Main() int[] ar = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; var Query = from n in ar where (n % 3 == 0) select n; foreach (int k in Query) Console.WriteLine(k); } from 순회변수 in 데이터 소스
메모리 내의 컬렉션을 대상으로 LINQ 실습 파일 목록 출력 using System; using System.Collections.Generic; using System.Linq; using System.IO; class CSTest { static void Main() var Files = from f in Directory.GetFiles("c:\\") select f; foreach (var f in Files) Console.WriteLine("이름 : " + f); }
메모리 내의 컬렉션을 대상으로 LINQ 실습 쿼리 표현식 where orderby let select group from
메모리 내의 컬렉션을 대상으로 LINQ 실습 using System; using System.Collections.Generic; using System.Linq; class People { public People(string aName, int aAge, bool aMale) { Name = aName; Age = aAge; Male = aMale; } public string Name; public int Age; public bool Male; } class CSTest static void Main() People[] arPeople = { new People("정우성", 36, true), new People("고소영", 32, false) ,new People("배용준", 37, true), new People("김태희", 29, false) }; // IEnumerable<People> Query = from p in arPeople select p; // 아래 문장과 같은 결과 var Query = from p in arPeople select p; foreach (People k in Query) Console.WriteLine("이름 : " + k.Name + ", 나이 : " + k.Age + ", 남자 : " + k.Male);
O/R 디자이너에서 LINQ 사용 예
프로젝트 클릭
Windows Forms 응용프로그램 선택 확인 클릭
ListBox 드레그
새 항목 클릭
1. LINQ to SQL 클래스 선택 2. 추가 클릭
1. 추가된 클래스 확인 2. 엔터티 클래스 창 3. 메서드 창
서버 탐색기 창 클릭
테이블 드레그(Address)
DataClasses1.designer.cs 더블 클릭 후 자동 작성된 소스 확인 : Address 테이블 부분)
MSSMS 에서 저장 프로시저 만들기 ADOTest 데이터베이스 클릭 새 쿼리 클릭 오른쪽 텍스트 카피하여 새 쿼리창에서 실행 오른쪽 텍스트 카피하여 새 쿼리창에서 실행 CREATE PROCEDURE myProc AS SELECT * FROM Address WHERE Name = '홍길동'; exec myProc ;
비쥬얼 스튜디오 창 저장 프로시저(myProc)를 메서드 창에 드레그
DataClasses1.designer.cs 더블 클릭 생성된 저장 프로시저(dbo.myPorc 부분) 확인
Forms1.cs 더블 클릭 윈도우 폼 더블 클릭
아래 내용 코딩 입력 (다음 페이지)
코딩할 내용 DataClasses1DataContext db = new DataClasses1DataContext(); System.Data.Linq.Table<Address> Address = db.GetTable<Address>(); var Query = from A in Address select A; foreach (Address k in Query) { listBox1.Items.Add(string.Format("이름 : " + k.name + ", 주소 : " + k.addr)); } db.myProc();
디버깅하지 않고 시작 클릭