티스토리 뷰
※ LINQ 연관글 모음 |
|
ASP.NET을 공부하면서 새롭게 만난 단어 LINQ, 어디서 들어 본듯한데 가물 가물하고, 그래서 이번 포스팅은 LINQ에 대해서 자세하게 알아볼까 합니다. LINQ는 Language-Integrated Query에서 따온 것으로 번역하면 "언어에 통합된 질의" 정도가 선명할것 같습니다.
conn = new MySqlConnection(connstr); conn.Open(); conn.ChangeDatabase(dbname); cmd = new MySqlCommand("SET NAMES UTF8", conn); cmd.ExecuteNonQuery(); cmd.CommandText = "SET COLLATION_CONNECTION=UTF8_GENERAL_CI"; cmd.ExecuteNonQuery(); chgcmd = new MySqlCommand("UPDATE master SET stat = 1 WHERE name = 'guest'", conn);
위의 예제 코드는 C#으로 작성한 MySQL DBMS 연결 및 질의 과정으로 SQL 질의문은 통상 ""으로 묶어서 명백히 구분되는 문자열로 기술합니다. C# 언어 입장에서는 SQL 질의문이 단순 문자열이기 때문에 C#이나 VB.NET같은 언어 요소의 하나라고 말하기에는 무리입니다.
using (var context = new ApplicationDbContext()) { clients = (from client in context.Users where client.Email.Contains(searchstr) || client.UserName.Contains(searchstr) && client.Roles.Select(r => r.Name).Contains("client") select client).ToList(); }
위의 코드는 C# LINQ 예제입니다. SQL 질의문 속에 있어야 할 "from", "where", "select"등이 스트링으로 처리되지 않고 C# 언어의 일부로 기술되어서 내부 변수와 자연스럽게 섞여 있습니다. SQL의 AND, OR등의 키워드 대신 C# 구문인 &&, ||이 조건을 기술하는데 쓰이고 있습니다. 자세한 내용은 아래의 링크를 참조하면 됩니다.
https://msdn.microsoft.com/ko-kr/library/bb397926.aspx
MS에서 제공하고 있는 다양한 예제 코드를 받으려면 아래의 링크를 통해서 다운로드 받으시면 됩니다.
비주얼스튜디오 2008에 처음 소개된 LINQ는 위에서 소개한 대로 C#이나 VB.NET과 자연스럽게 섞여서 프로그래머로 하여금 데이터 처리 과정을 보다 용이하게 할 수 있도록 해준 것이지만 LINQ가 SQL을 대신하는 것에 그치지 않고 데이터 저장소를 DB에서 XML이나 .NET 오브젝트, Dataset, Entity등으로 자연스럽게 확장할 수 있습니다. 하나의 LINQ를 활용한 데이터 처리 로직으로 다양한 데이터 소스를 다룰 수 있다는 것입니다. DBMS의 경우에도 NuGet 을 통해서 LINQ to MySQL, LINQ to FireBird등 SQL Server가 아닌 타사 DBMS를 LINQ를 통해 사용할 수 있습니다. 프로그램 메모리에 있는 오브젝트에 대해서도 XML 파일도 다양한 DBMS도 LINQ로 사용할 수 있음은 개발자에게는 상당한 매력입니다.
단순화한 도표를 통해서 다시 한번 살펴보면 C#이나 VB.NET으로 작성하는 응용 프로그램에서 LINQ구문을 통해서 데이터 질의를 수행하면 실제 수행은 LINQ to SQL을 거쳐 ADO.NET을 통해서 DBMS에 SQL 질의로 전달하고 그 질의 결과는 .NET 오브젝트 형태로 전환되어 프로그램 내부에서 간편하게 사용할 수 있게 되는 것입니다. 전체적인 그림으로 나타내면 아래와 같습니다.
'프로그래밍' 카테고리의 다른 글
LINQ 질의의 기본과 사전 타입 (0) | 2016.09.27 |
---|---|
LINQ 배우기를 위한 최적의 환경 LINQ to Objects (0) | 2016.09.12 |
ASP.NET Web Forms 시작하기 (0) | 2016.09.06 |
VS2012로 XP에서도 수행되는 프로그램 빌드하기 (0) | 2016.09.01 |
QT응용의 윈도우 포팅 성공 사례 (0) | 2016.08.25 |