이제 본격적으로 시작해 보죠.

앞의 내용들을 다 하고 나면
LINQ to SQL 클래스 만들때 넣은 이름+Context라는 클래스를 사용할수 있어요.

먼저 간단한 select부터 해볼께요.


             using (DataClasses1DataContext db = new DataClasses1DataContext())
            {
                var r01 = from x in db.LINQTEST
                          where x.age > 20
                          select x;

                foreach (var x in r01)
                {
                    Console.WriteLine(x.name);
                }
            }

LINQ to SQL 클래스를 쓰는거 말고는
전에 했던 LINQ to Object와 별 차이가 없네요

위 코드는
LINQTEST 테이블에서 age가 20보다 큰 x를 가져와서
x의 name을 출력하는 거에요.

이렇게 나오네요.

뭐. 설명하고 자시고 할것도 없네요.

이번에는 insert를 해볼께요.
먼저 코드
            using (DataClasses1DataContext db = new DataClasses1DataContext())
            {
                //객체를 만듭니다
                LINQTEST newData = new LINQTEST();
                //데이터를 넣습니다
                newData.name = "피요히코";
                newData.age = 30;
                newData.comment = "추가된 데이터입니다.";
                //변경된 내용을 반영합니다.
                db.LINQTEST.InsertOnSubmit(newData);
                db.SubmitChanges();
            }

순서는
1. insert할 객체를 만들고
2. 데이터를 넣고
3. 적용시킨다

입니다.

주의해야 할건
1. 테이블에는 항상 기본키가 잡혀 있어야 한다.
2. 변경내용은 SubmitChanges()를 해야 적용된다.
입니다.

LINQ to SQL 클래스를 사용하면 인텔리센스를 통해서 table과 column등에 접근할수 있으므로
정말 편하게 쿼리를 날릴수 있어요.

코드 자체는 어렵지 않으니
update와 delete 하는건 코드만 보고 넘어가도 될꺼 같네요.
(몇몇 중요해 보이는 부분은 주석으로 설명을 해둘꼐요)

update

            using (DataClasses1DataContext db = new DataClasses1DataContext())
            {
                var searchItem = (from x in db.LINQTEST
                                  where x.name == "피요히코"
                                  select x).SingleOrDefault();
                //Single()로 검색할경우 해당값이 없으면 Exception발생
                //SingleOrDefault()의 경우는 값 없을때 Null 리턴

                if (searchItem != null)
                {
                    //searchItem이 null이 아닌경우 comment를 변경
                    searchItem.comment = "변경되었어요.....";
                }

                //변경내용 확인
                var r01 = (from x in db.LINQTEST
                           where x.name == "피요히코"
                           select x).SingleOrDefault();
                Console.WriteLine(r01.comment);
            }

delete
            using (DataClasses1DataContext db = new DataClasses1DataContext())
            {
               var searchItem = (from x in db.LINQTEST
                                  where x.name == "피요히코"
                                  select x).SingleOrDefault();

                //삭제
                db.LINQTEST.DeleteOnSubmit(searchItem);
                db.SubmitChanges();

                //결과확인
                var searchItem2 = (from x in db.LINQTEST
                                  where x.name == "피요히코"
                                  select x).SingleOrDefault();
                if (searchItem2 == null)
                {
                    Console.WriteLine("지워졌다. ㅠㅠ");
                }
                else
                    Console.WriteLine(searchItem2.name);
            }

출처?는 김수영MVP님의 주말특강입니다
by 피요히코~ 2009. 4. 26. 21:05

이번에는 (좀더 많이 쓸수 있어 보이는)
LINQ to ADO.NET에 대해 봐볼께요
(LINQ to SQL이라고 해도 될듯한..)

이녀석은 일단 몇가지 선행작업이 필요해요.

일단 test해볼 테이블을 하나 만들었습니다.



그리고 테이블에 간단한 데이터를 몇개 넣어놨어요.


데이터가 뭐 이러냐 싶겠지만 pass....

비주얼스튜디오에서 서버탐색기를 열어서
DB를 연결시켜 줍니다.


그다음에
새항목을 추가 해야 되는데요.
LINQ to SQL 클래스를 추가해 줘야 해요.
이름은 MS에서 추천해주는 이름으로~

그러면
DataClasses1.dbml 파일과 DataClasses1.designer.cs 파일이 생겨요.
그리고 DataClasses1.dbml이 열려 있는데.
그 화면에
쓰고 싶은 테이블이나 프로시저 등을 서버탐색기에서 끌어다 놓으면 됩니다.

전 아까 만들어둔 LINQTEST 테이블을 끌어다 놓을께요.
(끌어 놓을때 경고창이 하나 떠요
 연결문자열을 구성파일에 저장할꺼냐 말꺼냐.
 아니요~ 하면 됩니다
 대신 app.config에서 connectionString에 pwd를 추가해 주셔야 해요. )

여기까지 했으면 이제 준비가 끝났네요...



출처?는 김수영MVP님의 주말특강입니다
by 피요히코~ 2009. 4. 26. 20:51
| 1 |