알지오 평생교육원

로그인|회원가입|고객센터
HOME>IT전문가>프로그래밍>LINQ

LINQ

LINQ
20회차 속성과정
전체 : 16시간 54분|회차당 평균 : 50분42초

이용기간 2개월

전문강사 : 한경호

270,000165,000



LINQ 사용법 강좌
LINQ는 SQL Server, 관계형 데이터, XML 등과 수많은 종류의 데이터 중 원하는 데이터를 쉽게 검색, 추가, 수정, 삭제할 수 있는 기능을 제공하는 프로그래밍 기술입니다. 또한 데이터 쿼리 및 업데이트에 사용할 수 있고 쉽게 배울 수 있는 표준적인 패턴이 도입되었으며 거의 모든 종류의 데이터 소스를 지원하도록 기술을 확장할 수 있습니다. 알지오 LINQ 강좌를 통해 기본 쿼리 작업, 데이터 변환, 형식관계, 질의(Query) 형식과 메서드(Method)형식, SQL Server 데이터베이스, ADO.NET 등과 같은 내용을 학습할 수 있습니다.
  • 01.51분 LINQ to Object(1)

    LINQ에 대해 알아보고 학습합니다.

    책갈피 : [00:04] 링큐의 특성/[00:44] 링큐의 장점/[01:27] Linq to object/[01:32] 문법에 따른 차이/[02:19] 결과값 확인/[02:43] 링큐로 작성된 코드/[03:13] DB 쿼리와 유사한 기능/[03:37] 결과값 확인/[03:52] 정렬/[04:38] 링큐로 만든 정렬 코드/[04:59] 결과 보기/[05:18] orderby절을 이용한 정렬/[05:26] 한글 지원 기능/[05:52] linQ to xml/[06:29] linqtoxml의 간략한 기능 살펴보기/[06:59] 기존방식 코드 보기/[09:12] 결과값 확인/[09:50] linq로 바꾼 코드 보기/[11:49] linq로 바꾼 결과값 확인/[12:37] orderby을 사용한 실행/[13:06] linqtoSQL/[14:10] 클래스 다이어그램/[14:26] DB 살펴보기/[15:03] 결과 보기/[16:13] ntt프레임워크/[16:23] 비주얼 스튜디오의 자동코드 생성/[17:13] 코드 수정/[17:52] 실행/[18:30] 쿼리 프로파일러/[19:28] 람다 형식/[20:35] where절/[21:14] 씨샵의 확장과 개선/[21:34] 닷넷/[21:46] 제네릭/[22:49] 코드 보기/[23:30] 확장성/[23:38] 너러블/[24:26] int?/[25:56] 다이나믹 키워드/[27:15] 명령 파라미터/[28:20] linq를 구성하는 기본 요소/[28:36] 확장메소드/[29:38] 결과값 확인/[29:58] 확장메소드를 이용한 잘라보기/[30:54] 확장메소드 코드 보기/[33:36] IEnumerable t 인터페이스/[34:05] 람다식/[34:13] Where의 내부구조 보기/[35:25] 반복자 알아보기/[36:21] foreach/[36:53] 반복자 만들기/[38:04] 결과값 확인/[38:35] 여러번의 리턴/[39:24] 지연 질의/[39:29] 소스 보기/[40:25] 결과값 확인/[41:20] select/[41:46] linq 방식의 효율적인 자원활용/[42:25] 즉시 질의 응용/[43:11] 링큐의 문법 살펴보기/[43:29] 람다식/[44:25] linq에서 지원하는 기본 function/[45:29] OrderByDescending/[45:48] Skip/[46:19] Take/[47:14] Skip과 Take를 이용한 결과값 확인/[47:46] Sum/[48:10] Average/[48:28] Count/[49:22] First/[49:52] Last/[50:08] Min/[50:19] Max

  • 02.57분 LINQ to Object(2)

    LINQ to Object 를 이용한 Web 프로젝트 만들기, LINQ to Object 를 이용한 Win 프로젝트 만들기

    책갈피 : [00:01] 링큐 심화학습/[00:29] 쇼핑몰 업무 구현/[00:47] 클래스 다이어그램 살펴보기/[02:54] 구현 소스 보기/[03:06] MyShop클래스/[03:17] CategoryInfo/[03:38] ProductInfo/[04:04] CustomerInfo/[04:36] BuyHisInfo/[05:01] BuyHisDetailInfo/[05:31] categoryInfoList/[06:39] productInfoList/[08:55] customerInfoList/[09:30] buyHisInfoList/[11:47] buyHisDetailInfoList/[13:23] 링큐 투 오브젝트의 기본정보/[14:04] 오브젝트들의 배열/[14:33] 클래스/[14:49] 제네릭 리스트 배열/[15:27] Generic Dictionary/[15:53] Where(람다식)/[17:58] MVC4/[19:40] 뷰/[20:29] 소스 보기/[20:31] IEnumerableT/[22:14] Product 보기/[23:02] 결과 화면 보기/[23:32] 주의할 점/[23:58] ProductInfo/[24:33] 가격별 정렬 화면 보기/[26:08] 고객 리스트 화면 보기/[26:57] 숫자를 바꾼 결과/[27:24] Skip/[28:01] 구매이력 보기/[29:08] 구매이력에 조건걸기/[30:54] 구매상세 보기/[32:28] 뷰안에서의 링큐질의/[34:34] 윈도우 프로젝트 만들기/[35:19] Form1/[36:52] DataGridView/[37:22] 컨테이너 Panel/[38:02] Dock/[38:52] Fill도킹/[40:40] 이벤트/[41:27] Name/[43:42] 프로젝트 빌드/[46:20] categoryInfo/[47:23] 오버라이드/[48:13] 빌드 확인/[49:54] Backgroundcolor/[50:26] Where로 필터링하는 소스 변경/[51:08] 빌드 확인/[51:25] 표준질의 연산/[51:38] Where/[52:20] Form 추가하기/[52:27] Windows Form/[52:48] TextBox/[52:53] MultiLine/[54:08] 출력 확인/[55:10] 그룹 바이/[56:25] 그룹 바이 구현

  • 03.52분 연산자와 질의

    변환 연산자, 누적 연산자, 정렬기능 확장, 중첩 질의, 그룹화 질의

    책갈피 : [00:01] 변환연산자 살펴보기/[00:10] 딕셔너리/[01:08] 딕셔너리를 이용한 가져오기/[01:26] 키값을 이용한 조회/[02:19] 실행/[02:43] 프로덕트 접근/[03:20] 세탁기 출력/[03:49] TV 출력/[05:14] ProductName을 이용한 출력/[05:45] categoryInfo/[06:50] categoryName/[07:07] 키를 이용한 객체접근의 장점/[07:33] 누적연산자 살펴보기/[07:51] Min/[09:07] 링큐구문의 장점/[09:35] 실행/[09:59] 배열형태/[10:30] Max/[11:16] IenumerableT generic/[11:45] sum/[12:27] 결과 보기/[12:41] Count/[13:15] Linq의 누적연산자 장점/[14:00] Where/[14:54] 결과 보기/[15:27] Sum, Skip사용/[16:27] 연산자 응용/[16:37] 정렬/[17:01] 소스 보기/[17:32] 역정렬/[17:51] 실행 결과/[18:56] ThenBy/[19:56] 정렬이 이루어지지 않은 결과/[20:58] 1차정렬, 2차정렬/[21:18] 올바른 결과/[22:32] ThenByDescending, ThenBy/[23:26] 여러가지 정렬을 사용한 결과/[24:22] 3차 정렬 이상/[25:45] 실행 결과/[26:20] 정렬 응용/[27:06] Take, Skip/[28:49] Skip의 순서/[29:57] Take(100) 결과/[30:32] 중첩질의 알아보기/[32:03] new/[32:17] 동적 클래스 만들기/[33:46] var, foreach 실행결과/[36:11] 반복 결과 확인/[36:33] categoryCount/[37:12] productCount/[38:21] 부모/[40:03] 그룹화 질의/[40:13] GroupBy/[41:17] a/[43:12] 실행 결과/[43:40] 빈 카테고리/[44:59] 그룹화 질의의 장점/[45:51] 그룹핑과 그룹핑시 카운트 추가 비교/[47:07] Count, Sum을 함께 사용/[48:04] 결과 확인/[48:57] String, ToString/[49:53] a. b

  • 04.48분 조인

    내부조인, 외부조인, 페이징 기법, 비제네릭 컬렉션 처리하기, 다중 그룹화

    책갈피 : [00:00] Join/[00:22] 내부 Join/[00:26] MyShop.categoryInfoList/[00:33] Join/[00:52] categorySeq/[01:28] MyProduct/[01:38] 실행, 결과 확인/[02:05] categoryName, categorySeq/[02:33] 실행, 결과 확인/[03:13] Join/[03:40] MyName/[04:04] MyProduct/[04:10] Join, foreach/[04:18] 실행, 결과 확인/[04:59] Join/[05:03] MyName, MyProduct/[05:44] 실행, 결과 확인/[06:03] MyName=b, MyProduct=a/[07:03] Join, Where/[07:30] productInfoList/[07:46] 결과 확인/[08:25] categoryName/[08:38] categoryInfoList, Where/[09:15] 결과 확인/[09:39] Where, Join/[10:14] 실행, 결과 확인/[10:39] 외부 Join/[10:59] from/[11:09] on/[11:28] DefaultIfEmpty()/[12:43] DefaultIfEmpty()/[13:20] 실행, 결과 확인/[13:52] Join, Where/[14:43] productInfoList/[15:10] DefaultIfEmpty()/[15:38] 실행, 결과 확인/[16:04] MyProduct=product/[17:05] where/[17:50] on product.categoryInfo.categorySeq/[19:20] productSeq=10/[20:18] 페이징 기법/[20:25] Form3 생성/[20:47] GetAll()/[21:18] item.productSeq=i/[21:51] Skip, Take, ToList/[22:24] 실행 결과 확인/[23:18] Take(10)/[25:36] Form3 전체 갯수/[25:47] GetAll()/[26:06] 페이징 기법, Skip, Take/[26:20] 결과 확인/[27:33] Take/[28:27] GetAll()/[29:39] 잠재적 문제점 해결법/[30:41] GetArrayList()/[31:04] ProductInfo()/[31:33] ArrayList/[32:32] GetArrayList()/[33:06] productList/[33:23] Cast/[33:53] 함수 나열/[34:14] item.productName/[34:53] Where/[35:23] from/[36:05] 결과 확인/[36:30] var list/[36:48] from/[38:01] DataTable/[38:26] from in, where/[38:57] where/[40:15] 그룹핑/[40:39] group by/[41:20] 실행, 결과 확인/[41:56] from in, productInfoList/[42:16] into/[42:31] group by, new/[42:34] 창 두 개로 나눠서 보기/[43:21] 실행, 결과 확인/[44:12] productSeq=33/[44:36] 실행, 결과 확인/[46:42] productSeq=55/[47:32] group by

  • 05.41분 동적질의, 디자인 패턴

    매개변수화된 질의, 사용자 정의 정렬, 동적 조건, 런타임 질의 심화, CSV 파일 읽기, 함수형 패턴

    책갈피 : [00:18] productinfolist/[00:44] int/[01:30] 실행, 결과 확인/[02:23] list/[02:27] foreach/[04:19] MyQuery()/[05:01] int productseq/[05:50] MyQueryName/[06:02] MyQueryName/[06:06] 실행, 결과 확인/[06:44] MyQueryNameLike()/[07:07] Contains(str)/[07:34] MyQueryNameLike/[07:47] 실행, 결과 확인/[08:27] productInfoList.Orderby/[08:50] Delegate/[09:01] MySort()/[10:08] 결과 확인/[10:28] Orderby/[11:30] bool/[12:12] MySort, MySort2 비교/[12:29] 실행, 결과 확인/[13:57] 문자열 컬렉션 편집기/[14:00] ProductSeq 선택/[14:19] switch/[16:22] 동적조건/[17:16] int.Parse(txtPrice.Text)/[19:54] Where/[20:01] & (앰퍼샌드)/[21:04] 오류 예제/[21:15] 오류 발생 원인/[21:46] var list/[22:08] int Parse/[22:34] 실행, 결과 확인/[23:53] 사용자 예외 처리/[24:00] if/[24:09] 심화 과정/[24:52] notEqul property/[25:00] greaterThan property/[25:21] System.Linq.Expressions.Expression/[25:27] typeof/[25:56] GreaterThan/[26:10] Expression.And/[26:30] Where/[27:19] 실행, 결과 확인/[28:02] NotEqual/[28:59] Expression.Equal/[29:28] 실행, 결과 화인/[29:51] GreaterThan -> LessThan 변경/[30:35] And -> Or 변경/[31:17] LessThan, Equal/[31:30] text 파일 데이터를 링큐 질의/[31:56] System.IO.File.ReadAllLines/[32:27] from/[32:51] StartsWith/[33:33] 실행, 결과 확인/[33:48] 데이터 변경 예제/[34:00] Test.csv 내용 변경/[34:18] 실행, 결과 확인/[35:11] csv/[35:54] addInfo/[36:17] 실행, 결과 확인/[36:31] 함수형 패턴/[36:44] select new MyShop.ProductInfo/[36:55] select new/[37:42] int.Parse/[38:28] 실행, 결과 확인/[38:53] productSeq/[39:04] 실행, 결과 확인/[40:00] get/[40:18] TempProductNo/[40:31] 실행, 결과 확인

  • 06.58분 디자인 패턴, 성능고려

    ForEach 패턴, 스트리밍 방식 주의, 즉시수행 주의, Max 연산자 대체, 성능상 부하, 성능을 고려한 선택

    책갈피 : [00:00] ForEach 패턴/[00:09] foreach/[00:28] 별개의 순환문/[01:09] foreach, func/[01:25] list.ForEach/[01:42] 확장 메소드/[02:12] MyFunction/[02:25] ForEach/[02:57] ForEach/[03:05] 실행, 결과 확인/[03:33] foreach 문/[04:38] int price/[05:02] a.price/[06:11] 복합적인 사용/[06:29] Where/[07:11] 실행, 결과 확인/[08:40] ForEach/[09:48] 주석처리/[09:52] 실행, 결과 확인/[10:38] 참고 설명/[11:05] ReadAllLines/[12:46] using/[13:06] Lines/[13:40] Lines 확장 메소드/[14:18] ReadLines()/[14:34] return/[15:37] 실행, 결과 확인/[16:22] ReadAllLines/[17:14] 누적 연산자/[18:21] IEnumerable/[18:50] where/[19:23] Test.csv 파일 확인/[20:11] while/[20:27] yield return line/[20:31] 프로시저 단위 실행/[21:03] 실행, 결과 확인/[21:23] Reverse()/[22:15] Reverse()/[22:18] yield return line/[23:05] 확장 메소드/[24:05] Reverse()/[26:04] ReadAllLines/[26:51] MAX 연산자/[28:13] 결과 확인/[29:14] ProductInfo/[30:24] productInfoList/[30:46] 실행, 결과 확인/[31:22] OrderBy/[31:52] OrderByDescending/[32:01] First()/[32:14] 실행, 결과 확인/[32:35] First()/[32:49] OrderByDescending/[32:55] Last()/[33:35] SingleOrDefault/[34:02] Max/[34:47] 실행, 결과 확인/[36:11] 사용자 질의/[36:20] MaxProduct/[37:13] 실행, 결과 확인/[37:39] static/[37:49] MaxProduct/[38:26] isFirst/[39:06] foreach/[39:42] CompareTo/[40:18] maxValue/[40:42] 실행, 결과 확인/[41:29] 순회 회차 확인/[42:30] LINQ 직관적/[42:55] 성능을 고려한 선택/[43:45] foreach/[44:29] for/[45:07] Where/[45:36] 실행, 결과 확인/[45:36] Data Insert/[45:40] Foreach/[45:58] For/[46:14] LINQ/[46:35] Foreach/[46:46] For/[47:00] LINQ/[48:15] Substring/[48:49] 실행, 결과 확인/[48:51] Data Insert/[49:37] 성능을 고려한 선택 결과/[50:53] LINQ 사용해야 하는 이유/[52:04] 그룹핑/[52:15] Group 추가/[52:45] DateTime start, DateTime end/[53:18] orderby/[53:45] SortedDictionary/[54:18] 실행, 결과 확인/[54:22] 예전 Group/[54:43] LINQ Group/[55:19] foreach/[55:28] 실행, 결과 확인/[55:31] 예전 Group/[55:45] LINQ Group/[56:12] LINQ 선언적/[57:05] LINQ 장점

  • 07.1시간 3분 Linq to SQL(1)

    객체 매핑하기, DataContext, 데이터 받아오기, 필터링, 정렬과 그룹화, 누적연산자

    책갈피 : [00:01] LINQ to sql/[01:35] 새 테이블/[02:27] 자료형, int/[02:43] string형, varchar/[03:14] 기본 키 제거/[04:13] ID 사양/[04:55] 샘플 데이터 넣기/[05:03] 상위 200개 행 편집/[06:49] using System.Data.Linq/[07:10] Table/[07:27] class 매핑/[07:32] class 추가/[08:45] Table/[09:26] using System.Data.Linq.Mapping/[10:04] Column 매핑/[10:51] IsPrimaryKey/[11:15] int/[11:30] IsPrimaryKey/[12:24] Table 제네릭/[12:45] using/[13:01] Table 제네릭/[13:11] DataContext/[13:18] GetTable/[13:57] 결과 확인/[14:37] string conn/[15:53] productName/[16:24] db.Log=Console.Out/[17:28] 실행, 결과 확인/[17:43] SELECT/[18:10] 데이터베이스 창에 적용/[18:48] 결과 확인/[19:27] 실제 날라가는 쿼리/[19:56] WHERE/[21:08] 원하는 컬럼 지정 후 날리기/[21:43] 실행, 결과 확인/[22:29] 지연 질의/[23:04] 모두 지우기/[23:25] 출력 확인/[23:53] Skip, take/[24:34] 결과 확인/[26:32] SELECT/[26:37] ROW_NUMBER/[27:01] ORDER BY/[27:18] BETWEEN/[28:51] 필터링/[29:06] 실행, 결과 확인/[29:47] 인젝션 공격 방어/[30:22] WHERE/[32:19] 캐싱/[33:04] where/[33:59] 결과 확인/[34:46] FROM, WHERE, LIKE/[35:25] NVarChar/[36:08] LIKE 기본 문법/[37:21] Contains/[38:01] Like/[38:17] 결과 확인/[39:18] OrderBy/[39:29] OrderBy/[40:08] 실행, 결과 확인/[41:03] OrderBy/[42:31] DESC/[42:37] 결과 확인/[42:56] OrderByDescending/[43:12] 쿼리 확인/[44:05] ORDER BY DESC/[44:36] from/[44:51] group by/[45:28] foreach/[46:18] 실행, 결과 확인/[47:15] group by/[47:49] ORDER BY/[49:35] group by/[50:15] 누적 연산자/[50:42] from/[51:23] Count()/[52:07] 결과 확인/[52:47] COUNT(*)/[53:25] GROUP BY/[54:05] MIN, MAX, Average, Sum/[54:51] 실행, 결과 확인/[57:16] 쿼리 확인/[57:32] MIN, MAX, AVG, SUM/[59:04] MIN, MAX, AVG, SUM/[59:25] price 그룹핑/[59:42] 실행, 결과 확인/[01:01:06] GROUP BY/[01:01:24] 두 쿼리문 비교/[01:02:01] productName 그룹핑 소스/[01:02:08] price 그룹핑 소스/[01:02:28] GROUP BY

  • 08.52분 Linq to SQL(2)

    조인, 객체트리, 지연로딩, 업데이트

    책갈피 : [00:00] 조인, 관계형 데이터베이스/[00:40] 테이블 추가/[01:16] varchar/[01:37] categorySeq/[02:28] 상위 200개 행 편집/[03:16] 소스 매핑/[03:24] Table/[03:50] Column/[04:19] 조인 구문 확인/[04:27] DataContext/[04:35] Console.Out/[04:45] GetTable/[05:30] from/[05:57] where/[06:39] from/[07:11] 데이터베이스 내용 확인/[07:52] 실행, 결과 확인/[09:51] 쿼리 확인/[10:29] SELECT/[10:38] FROM/[10:49] 소스 확인/[11:13] WHERE/[12:54] 쿼리 확인/[12:56] from/[13:03] join/[13:13] from, join/[13:19] on/[13:35] equals/[14:03] 실행, 결과 확인/[14:34] 칸 두개 나누기/[14:41] where/[15:05] INNER JOIN/[15:36] INNER JOIN/[16:22] OUTER JOIN/[16:53] GetTable/[17:01] 링큐 구문 확인/[17:04] from/[17:35] into/[17:45] DefaultlfEmpty()/[18:12] null 체크/[18:33] 결과 확인/[20:47] 쿼리 확인/[20:57] OUTER JOIN/[21:05] LEFT OUTER JOIN/[21:36] LEFT OUTER JOIN/[22:01] INNER JOIN 조건 추가/[22:45] join/[22:55] where/[23:37] INNER JOIN/[24:04] 조건 변경/[24:43] 실행, 결과 확인/[25:23] INNER JOIN, WHERE/[26:55] EntitySet/[27:07] Association/[27:34] DataContext/[27:57] 카테고리만 가져와도 되는 이유/[28:23] foreach/[29:12] 결과 확인/[29:54] 조건을 각각 주기/[31:32] 결과 확인/[32:37] where/[34:20] 결과 확인/[35:04] 지연 수행/[35:43] First()/[36:02] 실행, 결과 확인/[36:29] categoryinfo 쿼리 날라가기/[38:06] First()/[38:38] 지연 질의로 인해서 예상치 못한 결과 차단 방법/[38:47] ToList()/[39:14] ToList()/[40:37] SELECT/[40:45] UPDATE/[41:10] CategoryInfo/[41:27] 이벤트 생성/[41:36] SingleOrDefault/[42:06] db.SubmitChanges()/[43:33] 실행, 결과 확인/[44:23] UPDATE 복사/[45:37] UPDATE 안나오는 이유/[46:27] 출력 확인/[46:56] TextBox 추가/[47:44] 결과 확인/[48:08] textbox2 속성 확인/[48:17] 속성 이름 변경/[48:51] 실행, 결과 확인/[49:44] varchar, 길이 확인/[49:50] 길이 길게한 예제/[50:52] 문제 발생 확인/[51:06] 유효성 체크

  • 09.56분 Linq to SQL(3)

    Insert, Delete, 객체 매핑, Linq to SQL 디자이너, 질의 표현식 변환, 개체의 생명주기

    책갈피 : [00:00] 새로운 데이터를 DB에 생성하기/[00:05] INSERT/[00:55] Form-input box/[01:24] db.GetTable/[01:40] DbShop.ProductInfo/[02:23] productTable/[03:23] db.SubmitChanges/[03:59] 실행/[04:46] productSeq/[05:00] productSeq db 스키마/[05:36] 열 속성-ID 사양/[06:14] IsDbGenerated/[06:39] 실행/[06:59] 새로운 데이터 추가된 결과 확인/[07:51] Form에 새로운 데이터 입력/[08:18] price 사용자입력 받기/[08:31] 텍스트박스 추가/[08:56] 속성-이름 지정/[09:29] int.Parse/[09:39] 실행/[09:58] 결과 확인/[10:30] 배열형식/[10:35] InsertOnSubmit/[11:18] InsertAllOnSubmit/[11:50] product1/[12:00] product2/[12:08] list.Add/[13:12] 실행/[13:38] 결과 확인/[15:01] INSERT INTO/[15:45] SELECT, SCOPE_IDENTITY/[17:39] db.SubmitChanges()/[17:59] 예제, 실행/[18:41] 결과 확인/[19:08] InsertAllOnSubmit/[20:36] foreach/[20:50] 예제, 실행/[21:15] 결과 확인/[22:03] 2번 데이터 삭제하기/[22:30] SingleOrDefault/[22:55] DeleteOnSubmit/[23:48] 3번 데이터 삭제하기/[24:13] DELETE FROM/[24:55] 사용자가 선택한 데이터 삭제하기/[25:39] dataGridView/[26:08] SingleOrDefault/[26:19] 실행/[26:48] 결과 확인/[27:34] InsertOnSubmit, InsertAllOnSubmit/[28:15] DeleteOnSubmit/[28:46] DeleteAllOnSubmit/[29:31] productSeq가 10보다 작은 데이터는 삭제하기/[29:53] 결과 확인/[30:35] 객체를 관계형데이터와 매핑/[32:26] Column/[32:58] AutoSync/[33:13] CanBeNull/[34:04] DbType/[34:34] IsPrimaryKey/[36:55] 외부 xml파일과 매핑/[37:41] xml 형태로 데이터 관리/[38:00] Table/[38:17] Type, Column/[39:19] sqlmetal/[39:28] 개발자 명령 프롬프트/[39:47] sqlmetal에서 사용 가능한 옵션 확인/[39:56] server, database/[40:27] timeout/[40:42] 솔루션 탐색기-추가-새 항목/[41:03] LINQ to SQL 클래스/[41:45] 서버 탐색기/[42:19] 데이터 소스 변경/[43:45] ProductInfo를 디자이너를 통해 데이터 클래스 생성하기/[44:14] ProductInfo 속성/[45:14] TableAttribute/[46:40] 서버 탐색기-CategoryInfo/[47:41] LINQ to SQL/[48:43] 객체의 생명주기/[49:19] 데이터 컨텍스트/[49:54] 자체적인 캐싱기능/[51:10] InsertOnSubmit/[51:40] Form/[52:05] new CategoryInfo()/[52:26] categoryName 지정/[52:38] new ProductInfo/[53:00] db.SubmitChanges()/[53:10] 실행, 결과 확인/[53:36] categoryName 길이를 초과하여 에러 발생 예제/[54:27] 실행, 결과 확인/[54:56] db.SubmitChanges 에러 확인

  • 10.54분 Linq to SQL 동기화(1)

    비관적 동기화, 낙관적 동기화, 동기화 예외 처리, 트랜젝션을 이용한 충돌 해결, 데이터베이스 고급기능, SQL 객체반환, 저장프로시저 작업

    책갈피 : [00:00] 동기화/[01:10] lock/[02:00] 비관적 동기화/[02:37] 어플리케이션/[02:55] 낙관적 동기화/[04:07] 쿼리 확인/[04:21] UPDATE, SET, WHERE/[04:45] SELECT ROWCOUNT/[04:58] 실행, 결과 확인/[06:41] productName/[07:15] WHERE 절/[08:19] productName 변경/[08:50] 결과 확인/[09:20] SELECT ROWCOUNT/[09:44] 낙관적 동기화 성능 문제 발생/[10:12] ProductInfo 속성 확인/[10:43] Update Check-Always/[11:47] price 속성-Update Check-Never 변경/[12:09] 실행, 결과 확인/[13:31] categorySeq 속성-Update Check-Never 변경/[13:46] 실행, 결과 확인/[15:31] 동기화 예외 처리/[16:06] db.ChangeConflicts.ResolveAll/[16:43] 실행, 결과 확인/[18:05] KeepCurrentValues/[18:27] 실행, 결과 확인/[19:09] OverwriteCurrentValues/[19:23] 실행, 결과 확인/[20:56] item.MemberConflicts/[21:35] 실행, 결과 확인/[23:04] 트랜잭션을 통한 충돌 해결 기법/[23:42] try/[23:54] BeginTransaction()/[23:58] SubmitChanges()/[25:02] foreach/[25:19] 여러 건을 가지고 오는 예제/[25:48] Connection. Open()/[25:57] SubmitChanges()/[26:48] SELECT/[27:38] SubmitChanges()/[27:58] catch/[28:05] 실행, 결과 확인/[28:12] 일괄적 롤백/[28:32] 롤백 개념/[29:10] productName 변경/[29:25] 롤백/[30:02] 수정하려는 productName 외에 다른 productName 변경된 예제/[31:24] db.Transaction.Commit()/[31:30] 실행, 결과 확인/[33:13] db.Connection.Open()/[33:40] using/[34:02] TransactionScope/[34:24] SubmitChanges()/[34:45] 솔루션 탐색기-참조 추가/[35:09] 프레임워크-System.Transactions/[36:39] 텍스트 조합으로 인해 쿼리 날리는 경우 처리하는 방법/[37:24] 서버 탐색기-MyTable/[38:04] db.ExecuteQuery/[38:16] SubmitChanges()/[38:28] db.ExecuteQuery/[39:27] 파라메타형식/[40:21] ExecuteQuery 두번째 인자 (myParameter)/[41:10] SELECT/[42:03] foreach/[42:19] 실행, 결과 확인/[43:01] SELECT에 파라메타 가능한 이유/[44:06] 실제 쿼리가 어떻게 날아가는지 로그 확인/[44:34] 실행, 결과 확인/[46:29] SELECT 쿼리/[46:41] 실행, 결과 확인/[47:19] WHERE/[47:38] 저장 프로시저/[48:13] 프로시저 만드는 방법/[48:39] ALTER PROCEDURE/[49:28] 서버탐색기-저장 프로시저/[50:13] db.spGetMyTable/[51:22] foreach/[51:31] 실행, 결과 확인/[53:03] EXEC, RETURN_VALUE=프로시저명/[53:19] RETURN VALUE

  • 11.54분 Linq to SQL 동기화(2)

    저장프로시저, 사용자 정의 함수, 비지니스계층 개선하기, LINQ to SQL 정리

    책갈피 : [00:00] INSERT 프로시저/[00:19] INSERT 프로시저 생성하기/[00:35] CREATE PROCEDURE/[01:12] 실제 프로시저가 수행해야 될 부분/[01:17] INSERT INTO/[02:07] 서버 탐색기-저장 프로시저 확인/[02:20] 생성된 프로시저에 대해서 자동으로 함수 생성/[02:38] spInsertMyTable 검색/[02:47] 자동으로 생성된 코드 확인/[03:40] Insert, Update 버튼/[04:25] spInsertMyTable (myName, price)/[05:05] 프로시저 call하는 소스 실행, 결과 확인/[06:01] 인자를 실제 사용자가 입력한 값으로 넘기기/[07:29] int.Parse(txtPrice.Text)/[07:39] 실행, 결과 확인/[09:07] EXEC/[09:16] RETURN_VALUE/[10:25] spUpdateMyTable/[10:48] SET/[10:55] WHERE/[11:43] spUpdateMyTable/[13:02] 실행, 결과 확인/[13:31] 사용자가 입력한 텍스트 박스 값/[15:33] DELETE/[15:54] WHERE/[16:15] 서버 탐색기-저장 프로시저 확인/[16:45] Form에서 Delete 버튼 만들기/[17:03] spDeleteMyTable 함수/[17:32] 인자 price/[18:00] 실행, 결과 확인/[19:15] 사용자 정의 함수/[19:28] CREATE FUNCTION/[19:45] RETURNS INT/[19:55] AS, BEGIN/[20:18] SUM/[20:34] WHERE/[20:54] 서버 탐색기-함수 확인/[21:31] fnSumMyTable 검색/[21:54] 사용자 정의 함수 call/[22:28] RETURNS INT/[22:56] 실행, 결과 확인/[23:26] SUM/[24:24] CONVERT AS/[25:12] 사용자 정의 함수 응용/[25:17] dbo.UserPoint 테이블/[26:25] CREATE FUNCTION/[26:43] RETURNS INT/[27:12] RETURN Result/[27:37] 서버 탐색기-함수-fnSumUserPoint/[28:09] db.fnSumUserPoint/[29:10] DB Fun(UserPoint) 버튼 누르기/[30:18] sumData/[30:38] 비즈니스계층/[31:47] CompiledQuery/[32:04] 솔루션 탐색기-MyBiz/[32:38] CompiledQuery.Compile/[32:59] 캐싱/[33:08] using System.Data.Linq/[33:29] 람다 형식 구현/[33:46] public/[34:10] exProducts/[34:33] GetProductList/[35:54] ProductInfo 테이블 데이터 확인/[36:47] 실행, 결과 확인/[37:34] 재사용 만들기/[38:13] exProductsUnder/[38:50] ProductInfo 테이블 데이터 확인/[39:00] 실행, 결과 확인/[39:35] 객체 지향 프로그램/[40:20] ProductInfo 확장 기능 만드는 방법/[40:33] 접근자/[40:41] get, return/[41:42] 실행, 결과 확인/[42:05] dbml 확인/[43:07] 주의 사항 확인/[43:11] partial/[44:01] ProductInfo의 모든 속성 확인/[45:39] 실행, 결과 확인/[45:52] 확장성 메서드 정의/[46:25] partial void OnCreated()/[47:00] new ProductInfo/[47:19] else/[47:26] 동적 할당/[47:56] OnCreated 삭제 후 실행, 결과 확인/[48:36] partial void OnCreated()/[49:39] 데이터베이스-뷰/[50:02] 새 뷰 만들기/[51:15] ntt 프레임워크/[51:56] EDM/[52:59] LING to SQL 요약정리

  • 12.54분 LINQ to XML(1)

    XML API, LINQ to XML 개념, LINQ 를 이용하여 XML 다루기, XML 해석하기, XML 작성하기, XML 문서 생성하기, XML 내용 삭제하기, XML 저장하기

    책갈피 : [00:00] LINQ to XML/[00:27] LINQ to XML 잘 다루는 방법/[01:03] XML API/[01:24] links, link, url, name/[03:16] LINQ/[03:55] LINQ to XML와 API의 차이점/[04:19] LINQ/[04:40] products, product, productName, price/[05:29] XmlDocument/[05:48] XmlElement/[06:40] product.AppendChild(productName)/[07:09] doc.AppendChild(products)/[08:06] new XElement/[08:38] 함수형 생성/[08:48] 명령형/[08:55] 함수형 접근 방식/[09:11] 함수형 생성의 목표/[09:45] LINQ to XML 사용시 독립된 개체 활용/[10:19] XElement.Load(원하는 파일 위치)/[11:36] XElement.Load(URL)/[13:09] 주소창에 URL 입력/[14:00] 실행, 결과 확인/[14:52] XmlReader/[15:14] XNode/[15:44] 실행, 결과 확인/[16:18] 정적 메서드, Parse/[16:44] XElement.Parse/[17:28] Parse/[17:48] LoadOptions/[18:09] Load, LoadOptions/[18:34] Load, Parse 메서드/[19:05] XmlException/[20:40] Parse/[20:57] 실행, 결과 확인/[21:12] try/[21:38] XElement products=new XElement/[23:39] 명령형/[24:03] product.Add/[24:23] products.Add(product)/[25:01] 명령형, 함수형/[26:13] Form에서 변수 버튼 눌렀을 때 입려된 텍스트 값 나타내기/[27:06] GetProductName()/[27:26] return/[28:09] XDocument doc/[28:25] XProcessingInstruction/[28:59] XDeclaration/[29:44] XProcessingInstruction/[30:17] XElement/[31:08] DocumentType/[31:43] XDeclaration, XDocumentType/[32:25] 실행, 결과 확인/[33:11] body/[33:31] 새로운 객체와 속성을 삽입하기/[33:57] products.Add/[34:44] 실행, 결과 확인/[35:22] XAttribute/[35:40] XElement.Load/[36:37] AddFirst/[38:12] 객체와 속성 삭제/[38:57] 아무것도 삭제 하지 않았을 때 내용 확인/[39:25] 삭제하는 방법/[40:12] 모든 product 삭제하는 방법/[40:51] SetElementValue 이용하여 삭제/[41:36] 삭제하는 다른 방법/[41:58] String.Empty/[43:25] SetElementValue/[44:21] ReplaceNodes/[44:49] 실행, 결과 확인/[45:40] SetElementValue/[46:29] new XAttribute/[47:38] 실행, 결과 확인/[48:12] SetAttributeValue/[50:09] Attribute 삭제/[51:02] 저장/[51:12] products/[51:42] xml 파일로 저장하는 방법/[52:12] products.Save/[52:52] 저장된 형태 확인/[53:36] 저장 옵션/[53:44] SaveOptions.DisableFormatting

  • 13.52분 LINQ to XML(2)

    LINQ to XML 축 메소드

    책갈피 : [00:00] XML 웹 서비스/[00:17] LINQ to XML의 지리 기능 변환 기능/[00:46] 예제 XML 파일 확인/[00:59] category/[01:40] category, category name, books, book/[02:20] xml에서 데이터만 추려내는 방법/[03:00] 소스 확인/[03:03] Load/[03:38] root.Element/[04:32] 실행, 결과 확인/[05:12] NULL 체크/[06:03] 실행, 결과 확인/[07:28] Exists/[07:51] File Not Found/[09:27] cate/[10:14] 대소문자 구분/[12:09] Attribute/[13:39] att.Value/[15:42] att.ToString()/[16:13] att.Name.ToString/[17:36] att.Value/[18:33] name은 중복 특성 이름 오류 확인/[19:42] att.NextAttribute/[20:10] ToString()/[21:19] cate.NextNode/[22:48] PreviousNode/[23:57] Elements/[24:48] root.Elements(category)/[26:31] Elements 유의할 점/[27:47] Elements 실행, 결과 확인/[29:24] root.Elements(category)/[29:39] item.Attribute/[29:57] xml 확인/[31:01] if/[31:13] item.NextNode/[32:07] Elements 아쉬운 점/[33:01] Descendants/[33:39] foreach/[34:02] 실행, 결과 확인/[34:52] Elements, Descendants/[35:12] Elements, Descendants 차이점/[36:10] from/[37:29] 람다식/[38:02] a.Attribute/[40:24] Ancestors/[41:11] Ancestors 실행, 결과 확인/[41:47] Ancestors/[42:02] Ancestors 실행, 결과 확인/[43:15] DescendantsAndSelf/[43:50] Descendants 실행, 결과 확인/[44:48] ElementsAfterSelf, NodesAfterSelf, ElementsBeforSelf, NodeBeforSelf/[45:03] ElementsAfterSelf/[45:15] cate.ElementsAfterSelf/[45:41] 실행, 결과 확인/[46:39] NodesAfterSelf/[46:59] 실행, 결과 확인/[47:34] xml 확인/[48:20] ElementsBeforSelf/[48:32] 실행, 결과 확인/[49:19] NodeBeforSelf/[49:38] 실행, 결과 확인/[50:29] ElementsBeforSelf 실행/[50:39] NodeBeforSelf 실행/[51:05] ElementsBeforSelf("category")/[51:14] xml 확인

  • 14.54분 LINQ to XML(3)

    표준질의 연산자, Select, Where, Orderby, GroupBy, XPath를 이용하여 LINQ to XML 에 질의하기, XML 변환하기

    책갈피 : [00:00] 표준질의 연산자/[00:05] Select/[00:31] root.Descendants/[01:05] xml 확인/[02:06] Select/[02:15] 실행, 결과 확인/[02:34] from/[03:13] select(string)/[03:41] select 응용/[03:59] a.Element()/[04:31] xml 확인/[04:56] Element()/[05:19] 실행, 결과 확인/[06:24] 실행 결과창 확인/[06:56] Descendants("category")/[07:07] a.Attribute()/[08:01] 실행, 결과 확인/[09:13] Where/[10:06] xml 확인/[11:56] 주석 처리/[12:11] Count()/[12:55] Where 실행, 결과 확인/[13:51] Descendants/[14:03] Count()==2/[14:09] 실행, 결과 확인/[14:31] xml 확인/[15:03] 실행 결과창 확인/[15:21] 최상위 루트 추가하기/[15:42] 실행, 결과 확인/[16:54] Count()==9/[17:05] 실행, 결과 확인/[17:26] 정렬, 그룹화/[18:00] .OrderBy/[18:22] 실행, 결과 확인/[18:43] 정렬/[19:08] category name 변경 후 순서 확인/[19:58] 정렬 조건 바꾸기/[20:15] a.Descendants().Count()/[20:40] Orderby 실행, 결과 확인/[21:18] ThenBy/[22:37] category name 변경 후 순서 확인/[22:56] Orderby/[23:06] 갯수가 같은 경우 이름으로 2차 정렬/[23:27] GroupBy/[23:45] Select/[24:08] 그룹핑/[24:46] GroupBy/[25:10] xml 확인/[25:22] 실행, 결과 확인/[26:12] OrderByDescending/[26:52] ThenByDescending/[27:30] XPath/[28:11] using System.Xml.XPath/[29:23] XPathSelectElements/[29:45] XPath 실행, 결과 확인/[30:30] XPathSelectElements 호환성 유지/[31:14] root.Element("category")/[31:39] XPathSelectElements/[31:50] XPath에서 최상위 노드를 가져오는 명령/[32:21] 실행, 결과 확인/[32:43] root.Element("books")/[33:12] ele.XPathSelectElements/[33:27] 현재 노드의 부모/[33:43] 실행, 결과 확인/[34:23] xml 확인/[35:48] xml을 xhtml문서로 변환하기/[36:20] title, content/[37:15] Form, Change/[38:15] 구분자 넣기/[39:53] 실행, 결과 확인/[40:36] html, body, h1, div/[41:35] 동적인 데이터/[42:13] root.Descendants()/[42:33] 실행, 결과 확인/[43:10] xml 파일을 기반으로 하는 html 파일 만들기/[45:06] from/[46:22] Content/[46:54] xml 확인/[47:06] Change 실행, 결과 확인/[48:05] 샘플 데이터 추가/[49:01] xml 확인/[49:26] XSL/[49:38] string xsl/[50:07] template/[50:43] XDocument 변수 선언/[50:56] using/[51:23] XslCompiledTransform/[51:30] xslTran.Load/[52:12] xslTran.Transform/[53:04] 실행, 결과 확인/[53:40] 데이터 추가하기

  • 15.53분 통상적인 LINQ to XML(1)

    데이터베이스 데이터를 바탕으로 XML 만들기, XML 데이터와 데이터베이스 데이터를 머지 하여 XML 만들기

    책갈피 : [00:10] XML에서 객체 만드는 방법/[01:30] for/[01:50] Add/[02:44] foreach/[02:58] Print()/[03:28] return result/[03:39] 실행, 결과 확인/[04:40] xml 확인/[05:36] Load/[05:48] from/[06:12] select/[06:37] Title, Content, Price/[07:38] 실행, 결과 확인/[09:45] 맵핑/[09:58] 복수계/[11:02] 복수계/[11:23] from/[12:15] Print()/[12:50] 실행, 결과 확인/[13:45] 데이터베이스에서 값을 불러와서 XML 만들기/[13:59] CategoryInfo 확인/[14:57] Sql to XML(Category)/[15:40] DataContext()/[17:17] from category in db.CategoryInfo/[18:43] xml.ToString/[19:08] Sql to XML(Category) 실행, 결과 확인/[20:12] 데이터베이스 확인/[20:53] db.CategoryInfo.Where/[21:18] 실행, 결과 확인/[23:31] Sql to XML(Product)/[24:21] XElement xml/[24:45] db.ProductInfo/[26:40] 실행, 결과 확인/[27:39] 데이터베이스 확인/[28:28] OrderBy/[30:50] partial, get 접근자/[31:36] 실행, 결과 확인/[32:28] ToString()/[32:55] 여러 테이블 조합하는 예제/[34:26] XElement xml/[35:42] 계층 구조/[37:00] Sql to XML(혼합)1 실행, 결과 확인/[38:45] Where를 없앴을 때 실행, 결과 확인/[40:05] Where/[40:29] Sql to XML(혼합)2 실행, 결과 확인/[41:28] Sql to XML(혼합)1 확인/[42:16] Where/[42:54] Sql to XML(혼합)3 실행, 결과 확인/[43:23] seq 역정렬하기/[43:32] .OrderBy/[43:44] .OrderByDescending/[44:03] Sql to XML(혼합)3 실행, 결과 확인/[44:24] 역정렬, .OrderByDescending/[46:20] Linq to SQL My Category_Change/[47:12] XML 파일과 데이터베이스에서 불러온 데이터를 혼용하기/[47:32] XML and SQL/[47:40] db에서 가져온 데이터와 xml 파일에서 읽어온 데이터를 합치기/[49:10] 최상위 노드 만들기/[49:20] root.Descendants/[49:38] xml 파일 확인/[50:14] 동일 레벨 노드 만들기/[50:37] Where/[51:31] XML and SQL 실행, 결과 확인

  • 16.56분 통상적인 LINQ to XML(2)

    XML을 읽어와서 데이터베이스 업데이트, Text 파일을 읽어와서 데이터베이스 업데이트

    책갈피 : [00:00] XML에서 데이터를 읽어온 후 데이터베이스에 저장하기/[00:32] xml 파일 확인/[00:53] 데이터베이스 테이블/[01:18] 데이터베이스에 저장하기/[01:46] 고유키 칼럼/[02:11] Form 확인/[03:14] dbml에 데이터베이스 테이블 가져오는 방법/[03:47] 구현/[04:29] Elements/[05:12] dataGridView1.DataSource/[05:22] Search버튼 눌렀을 때 Form 확인/[06:01] dataGridView1.SelectedRows/[07:02] db.SubmitChanges()/[07:31] 개체 탐색기-테이블 확인/[08:46] 검색 구현하기/[08:55] Where/[09:26] 검색 조건 입력 후 검색하기/[10:57] Where/[11:23] IsNullOrEmpty/[12:31] MessageBox.Show/[13:05] xml 파일 확인/[14:49] db.Book.SingleOrDefault/[15:42] InsertOnSubmit/[16:10] db.SubmitChanges()/[16:19] 실행, 결과 확인/[17:06] xml 수정/[17:59] 데이터베이스 확인/[19:00] SelectedRows/[19:32] 검색된 데이터 삭제하기/[20:27] 실행, 결과 확인/[20:52] 개체 탐색기 확인/[21:19] foreach/[21:40] db.Book.SingleOrDefault/[22:48] MessageBox.Show/[22:55] else, db.Book.DeleteOnSubmit/[23:08] db.SubmitChanges()/[23:34] 실행, 결과 확인/[24:22] 삭제시 알아야 할 점/[24:51] Windows.Forms에서 삭제하기/[25:22] OKCancel/[26:24] 데이터베이스에 추가하기/[27:22] 텍스트파일에서 데이터 불러오기/[27:46] CSV Load/[28:03] CSV 파일 확인/[29:03] ReadAllLines/[29:40] ReadAllLines/[29:57] let/[30:20] CSV 파일 확인/[30:52] let/[31:17] int.Parse/[31:46] 실행, 결과 확인/[32:38] CSV Load/[33:46] 개체 탐색기 확인/[34:58] csv에서 읽어온 로직 확인/[35:58] csv 파일에서 내용 수정 후 CSV Load, Add 실행/[36:47] All Search/[38:34] from절/[38:55] ReadAllLines/[39:11] allBook/[40:00] 실행, 결과 확인/[41:13] csv 두 건 추가하기/[41:27] All Search 실행, 결과 확인/[42:04] Add 실행, 결과 확인/[42:15] Delete 실행, 결과 확인/[44:40] DB Load/[45:36] 실행, 결과 확인/[46:15] 데이터베이스 확인/[46:26] 데이터베이스 값 가공하여 제공하기/[47:05] 실행, 결과 확인/[49:05] 데이터베이스 값을 CSV로 제공하기/[50:33] 데이터베이스 확인/[50:55] select/[51:28] StringBuilder/[51:43] str.Append()/[51:55] CSV 실행, 결과 확인/[52:18] 데이터를 제공하는 쪽에서 필터링하기/[53:51] 실행, 결과 확인/[55:11] Where

  • 17.54분 LINQ 확장하기(1)

    사용자 정의 질의 연산자 작성, 질의 변환 메커니즘

    책갈피 : [00:00] LINQ 확장성/[00:27] LINQ to Object/[01:09] LinQ to SQL/[01:51] LINQ 확장기능성/[02:05] 사용자질의 연산자/[02:49] Sum/[03:11] try/[03:44] select/[03:56] Sum/[04:19] catch/[04:30] 실행, 결과확인/[05:00] int.MaxValue/[06:44] Sum/[06:52] Where/[07:44] LongSum()/[08:06] static class/[08:17] public static long LongSum/[08:57] foreach/[09:34] 실행, 결과 확인/[10:07] public static int LongSum/[10:21] 실행, 결과 확인/[10:56] checked/[11:26] 실행, 결과 확인/[11:37] 다른 확장 메소드 예제/[12:41] Min/[13:26] if/[14:12] return/[14:47] xml 확인/[15:06] Min 실행, 결과 확인/[16:22] xml 데이터 바꾸기/[16:40] Min 실행, 결과 확인/[17:44] Max/[18:07] public static Book Max/[18:33] this, foreach/[19:33] return/[19:44] Max 실행, 결과 확인/[20:35] 여러개의 Max 버튼 수행하기/[21:07] 실행, 결과 확인/[22:24] xml 타이틀 변경하기/[23:34] category.ProductList()/[23:57] 확장 메소드를 이용하여 LINQ를 확장해서 가져오기/[24:24] Category Product 실행, 결과 확인/[24:51] public static/[26:04] Where/[26:19] 실행, 결과 확인/[28:00] SumProductPrice()/[28:21] .Sum/[28:37] 실행, 결과 확인/[30:30] Category Product 실행, 결과 확인/[31:15] 사용자질의 확장에서 Book 테이블 갖고 작업하기/[32:08] 개체 탐색기 확인/[32:45] Expensive/[33:14] IsExpensive/[33:38] pageCount/[34:59] 확장메소드 구현하기/[35:05] public static/[35:29] this/[35:46] 솔루션 탐색기 확인/[36:16] pageCount/[36:53] return isExpensive/[37:46] Expensive 실행, 결과 확인/[39:34] 백분율 구하기/[40:06] Thick/[40:24] IsThick/[40:50] this/[41:33] item.IsThick()/[42:01] Thick 실행, 결과 확인/[42:45] Expensive Thick Check/[43:58] IsThick()/[44:13] Expensive 실행, 결과 확인/[44:36] Expensive Thick Check 실행, 결과 확인/[45:05] pageCount 수정 후 실행, 결과 확인/[46:30] db.Book/[47:35] where/[47:51] AppendText/[48:06] using System.Linq/[48:42] MyWhere 실행/[49:27] 확장한 구문 사용/[49:57] public static class/[50:29] return Enumerable.Where/[50:53] Console.WriteLine/[51:14] Console.WriteLine/[51:26] return Enumerable.Select/[51:48] MyWhere 실행/[52:14] using System.Linq/[52:22] using WinStudy.Mylmplement/[53:11] MyWhere 실행/[53:43] Console.WriteLine

  • 18.52분 LINQ 확장하기(2)

    질의표현식간의 충돌, 비제네릭 특정영역에 대한 연산자, Linq to 웹서비스

    책갈피 : [00:00] LINQ 확장기능 주의점/[00:20] using System.Linq/[00:36] select, foreach/[00:54] MyWhere 실행, 결과 확인/[01:12] 솔루션 탐색기-MyImple/[01:49] Where/[02:41] orderby/[03:54] 오류 확인/[04:29] Where, Select/[05:13] orderby/[06:09] IEnumerable/[06:57] static class/[07:16] Where/[07:39] this/[07:59] Console.WriteLine/[08:23] yield return/[09:11] foreach/[10:06] yield return/[10:32] using/[11:24] MyWhere 실행, 결과 확인/[12:57] Where, Select 확장/[13:40] orderby descending/[14:52] where/[14:57] orderby descending/[17:16] using System.Linq/[17:27] where, select 오류 확인/[18:46] using.WinStudy.Mylmplement/[19:14] MyImpleProduct/[19:49] foreach/[20:09] Console/[20:42] orderby/[21:06] 실행, 결과 확인/[22:13] orderby product.productSeq/[22:47] LINQ to 웹서비스 프로젝트 만들기/[22:55] Form 확인/[23:54] yes24 웹서비스 확인/[25:16] Search 함수/[26:24] strUrl, searchTitle/[26:50] XElement.Load/[27:18] from/[27:42] select/[28:19] if/[28:33] Where/[29:24] return/[30:12] 속성-이벤트/[30:45] SelectionChanged/[32:00] Url 입력/[34:14] BookSearch 확인/[34:36] Url 변경/[35:48] 제목 Search/[36:23] 링크/[36:53] 선택한 Title 열기/[37:45] 카테고리/[37:52] WebForm, frm.Show()/[39:12] 예제 실행, 결과 확인/[39:39] 웹페이지 확인/[40:08] 웹서비스 주소/[40:27] DropDown box/[42:02] DropDownListItem/[42:37] Clear()/[42:52] WebServiceUrl/[43:37] BookSearch 확인/[44:38] RSS 웹서비스/[44:53] title, link, description/[45:53] 캐나다 국립도서관 Search/[46:27] category 못 가져온 이유/[46:44] 예외처리/[47:46] aspx 확장자/[48:52] 국립외교원 전자도서관 예제/[49:10] rss/[50:04] 데이터가 깨지지 않고, 정확하게 들어오는지 확인/[51:03] 교육부 사이트 예제/[51:15] item, title, link, description/[51:48] 실행, 결과 확인

  • 19.- LINQ 실전 웹 프로젝트(1)

    실전 웹 프로젝트를 제작해봅니다.

    책갈피 : [00:00] 실전 웹 프로젝트를 제작하기/[00:30] 새 프로젝트 만들기/[01:02] 프로젝트 이름 지정/[01:14] 새 ASP.NET MVC 4 프로젝트 확인/[01:55] 단위 테스트 프로젝트 만들기/[03:15] Model 만들기/[03:50] LINQ to SQL 클래스 추가/[04:44] 서버 탐색기/[05:03] 테이블 확장/[05:13] 데이터 연결/[05:46] SQL Server 인증 사용/[07:13] private/[07:30] 웹 사이트 만들기/[07:38] 컨트롤러 만들기/[09:10] Index()/[09:29] return View()/[09:56] 뷰 추가/[11:03] 웹 사이트 생성/[11:39] 기본 주소/[12:19] table, tr, td/[13:12] dbml/[13:27] namespace/[14:24] Where, AsQueryable/[14:44] using 구문/[15:22] foreach/[15:44] item.title/[16:27] tr/[16:40] table border/[16:52] style=width/[17:00] td style=background/[18:08] item.price/[18:49] 결과 확인/[19:07] Layout/[19:25] 뷰 추가/[19:52] RenderSection, RenderBody/[20:53] RenderSection/[22:19] Layout 테이블 구조/[23:11] 생성/[23:20] Index()/[24:01] Create()/[24:20] section MyScript/[25:19] 소스 보기/[26:40] 모든 페이지에서 제이쿼리 사용하기/[27:07] location.href/[27:58] InsertOnSubmit()/[28:36] return/[29:34] 실제 데이터베이스 값 조회/[31:26] 컬럼 추가 확인/[32:04] modify 페이지 만들기/[32:29] int seq/[33:13] a.Seq/[33:30] return View()/[33:40] 뷰 추가/[34:30] using MyBook.Models/[35:22] content/[35:37] 빌드/[35:50] 수정버튼 누르면 페이지 이동/[36:29] 수정된 값으로 저장하기/[37:34] if/[39:06] 빌드/[39:48] 등록부터 수정까지 확인/[40:26] Save/[41:07] 삭제/[41:42] onclick=return DeleteAt/[43:00] location.href/[43:11] Delete/[44:11] isSuccess/[45:07] 데이터베이스 확인/[45:47] 삭제 구현/[46:56] 검색 기능/[47:20] table/[47:41] input/[49:00] submit()/[49:32] Where/[50:27] 데이터 검색/[50:51] return/[51:33] LIKE 검색/[52:01] LIKE/[53:42] LINQ to SQL에서만 Like 가능/[53:51] 빌드

  • 20.53분 LINQ 실전 웹 프로젝트(2)

    실전 웹 프로젝트를 제작해봅니다.

    책갈피 : [00:00] 두 개의 테이블을 이용한/[00:25] 관계/[01:06] 외래 키 관계/[01:21] 테이블 및 열 사양/[02:31] 프로젝트 만들기/[02:40] 프로젝트 세분화하여 나누기/[03:31] 새 항목 추가-LINQ to SQL 클래스/[04:10] CategoryInfo, ProductInfo/[05:10] designer.cs 파일 확인/[05:26] 비지니스 레이어 만들기/[05:49] GetList()/[06:02] db.CategoryInfo.AsQueryable()/[07:06] 비지니스 프로젝트에서 주의할 점/[07:32] 참조 추가-솔루션/[08:17] 웹 프로젝트/[08:42] 페이지 만들기/[08:56] Index(), CategoryMngBiz(), GetList()/[09:25] return View(list)/[09:48] foreach/[10:50] Product 만들기/[11:21] using/[11:29] GetList()/[11:49] db.ProductInfo.AsQueryable()/[12:00] 컨트롤러 추가/[12:35] using/[12:39] Index()/[12:58] 뷰 추가/[13:17] model IQueryable/[13:51] item.productName/[14:16] 빌드 후 페이지 확인/[14:38] Product 페이지와 category 페이지 비교/[15:13] categoryName 부분 가져오기/[16:03] item.CategoryInfo.categoryName/[17:38] item.CategoryInfo.categoryName/[17:56] 결과 확인/[18:48] 데이터베이스 확인/[19:53] table, tr, td/[20:24] item.ProductInfo/[20:39] foreach/[20:59] 웹페이지 확인/[21:40] categorySeq 값 변경 후 결과 확인/[22:22] pro.price/[23:01] foreach/[23:06] 제네릭 형태/[24:18] Where, OrderBy/[24:38] OrderByDescending/[25:00] categoryName에 속한 것에 대해 sum 하기/[25:44] 결과 확인/[26:06] Min, Max/[26:23] item.Product.Info.Min/[26:54] 결과 확인/[27:39] 검색하기/[27:56] GetList()/[28:34] SearchList()/[28:44] Where()/[29:16] 결과 확인/[30:03] Like 검색/[31:59] db.CategoryInfo.Where/[32:15] a.ProductInfo/[33:00] Count/[33:43] 서브 쿼리/[33:56] 결과 확인/[35:03] Product 생성/[35:18] Save()/[35:39] db.SubmitChanges()/[36:10] try/[36:25] Create 뷰 확인/[36:55] success/[37:33] categorySeq/[39:21] item.CategoryInfo.categoryName/[39:31] 예외 처리/[40:58] tr 추가/[41:13] foreach/[41:49] CategoryMngBiz().GetList()/[42:32] 결과 확인/[43:55] Category 페이지 확인/[44:36] Product/Create 페이지 확인/[46:20] Category 삭제하기/[46:48] db.CategoryInfo.SingleOrDefault/[47:08] db.CategoryInfo.DeleteOnSubmit/[47:14] db.SubmitChanges()/[48:03] DeleteAt/[48:28] try, catch/[48:40] 결과 확인/[49:40] 해당 Category와 하위 Product도 함께 삭제하기/[49:59] ProductInfo.DeleteAllOnSubmit/[50:55] 데이터 삭제, 결과 확인/[52:44] 상위 삭제시 관계 설정에 의하여 하위 삭제