.NET/C#

    [C#] Entity Framework Core - 5. Code First Model

    [C#] Entity Framework Core - 5. Code First Model

    8. EF Core Code First Model Code First Model은 현재 사용하고자 하는 DB가 존재하지 않을 때 C#으로 Model을 정의하여 이를 토대로 DB를 생성하는 방식을 말합니다. 예를 들어 학생과 수업를 관리하는 DB가 필요하다고 할 때 학생은 다수의 수업에 대한 수강신청이 가능하고 하나의 수업에서는 여러 학생이 출석할 수 있습니다. 이때 학생과 수업 테이블 간에는 다대다 관계가 성립됩니다. 위와 같은 시나리오에서 모델을 정의하는 과정을 따라가 보면 우선 다음의 Namespace를 Import하고 using Microsoft.EntityFrameworkCore.Design; using Microsoft.EntityFrameworkCore.SqlServer; Student.cs와..

    [C#] Entity Framework Core - 4. 데이터 조작과 트랜잭션

    6. EF Core를 통한 데이터 조작하기 EF Core를 사용해 데이터를 추가하거나 변경하거나 삭제하는 작업은 크게 어렵지 않습니다. DbContext는 자동적으로 변화에 대한 추적을 관리하므로 내부에서 반영된 여러 데이터의 추가/삭제/변경에 관한 사항을 로컬 Entity 통해 가지게 됩니다. 그리고 이 변경사항을 실제 데이터베이스에 반영하기를 시도(SaveChanges() 메서드를 통해)하면 Entity는 반영된 결과를 반환하게 될 것입니다. (1) Insert Insert는 해당 Entity에서 Add()메서드를 통해 실행할 수 있습니다. using (Northwind db = new()) { ILoggerFactory loggerFactory = db.GetService(); loggerFacto..

    [C#] Entity Framework Core - 3. 질의하기및 Pattern 로드

    [C#] Entity Framework Core - 3. 질의하기및 Pattern 로드

    4. EF Core model 질의하기 이전 과정을 통해 Northwind DB의 Products와 Categories가 2개의 테이블과 일치되는 Model을 가지게 되었고 필요한 데이터를 가져오기 위한 질의를 수행할 수 있게 되었습니다. 그리고 Model에 질의를 수행하는 데는 통상 LINQ를 사용합니다. 우선 Program.cs에서 아래 Namespace를 Import 합니다. 이 Namespace는 Model과 관련된 테이블로부터 데이터를 가져오기 위한 확장 메서드를 사용하기 위한 것입니다. using Microsoft.EntityFrameworkCore; 그리고 Products테이블에있는 모든 ProductId와 ProductName을 가져오기 위한 아래 질의를 구현합니다. using myapp;..

    [C#] Entity Framework Core - 2. 모델링(Modeling)

    [C#] Entity Framework Core - 2. 모델링(Modeling)

    3. EF Core Model EF Core는 여러 규칙을 나타내는 Convention과 테이블의 칼럼을 정의하는 annotation attribute, Fluent API의 조합을 통해 런타임에서 Entity Model을 생성하는 데 사용합니다. 때문에 클래스상에서 동작하는 모든 Action은 후에 실제 Database에 적용되는 Action으로 자동적으로 변환됩니다. 여기서 Entity Class는 테이블의 구조를, 클래스의 인스턴스는 테이블의 행을 나타냅니다. (1) EF Core Convention 모델을 정의하기 위해서 사용할 수 있는 방법으로는 대게 3가지가 있는데 그 중 첫 번째 방법은 EF Core convention을 사용하는 것입니다. 번역하자면 '규칙'에 해당하는데 아래 규칙을 통해 ..

    [C#] Entity Framework Core - 1. 시작/설정하기

    [C#] Entity Framework Core - 1. 시작/설정하기

    Entity Framework Core의 목적을 간단히 설명하면 개체 관계 매핑(ORM:Object-Relational Mapping) 기술로서 MS-SQL이나 SQLite와 같은 데이터베이스에 데이터를 읽고 쓰는 데 사용되는 기술이라고 할 수 있습니다. 1. 데이터베이스 데이터를 저장하는데 가장 일반적으로 사용되는 데이터베이스종류로는 Microsoft SQL Server, PostgreSQL, MySQL, SQLite과 같은 RDBMS(Relational Database Management System)와 Microsoft Azure Cosmos DB, Redis, MongoDB, Apache Cassandra와 같은 NoSQL 이렇게 2가지로 나누어질 수 있습니다. (1) Entity Framewor..

    [C#] 함수(메서드)의 실행과 디버깅및 테스팅

    [C#] 함수(메서드)의 실행과 디버깅및 테스팅

    1. 함수(메서드) 어떤 처리를 위해 작성하는 코드가 반복되어 작성되고 있다면 해당 코드를 특정한 함수로 만들어 놓는 방법이 필요합니다. 이는 동일한 처리가 필요한 여러 부분에서 해당 함수를 호출하게 함으로써 코드의 반복을 줄일 수 있습니다. 예를 들어 회계프로그램 등에서 부가세를 계산해야 하는 경우라면 이 기능 자체를 함수로 만들어 부가세 계산이 필요한 모든 부분에 공통적으로 적용하게 되면 부가세 계산이 필요한 부문마다 동일한 코드가 작성되는 낭비를 줄일 수 있는 것입니다. //자동차 int car = 10000; //비행기 int air = 20000; Console.WriteLine($"자동차 부가세 : {car / 10}"); Console.WriteLine($"비행기 부가세 : {air / 10..

    [C#] TCP/IP 통신

    [C#] TCP/IP 통신

    1. TCP/IP 컴퓨터 사이에 데이터를 주고받으려면 나름대로의 규칙이 필요합니다. 어떠한 방법으로 어떠한 방식을 통해 전송할 것인가를 정해야 하고 그래야 데이터를 그 약속대로 보내고 받을 수 있을 것입니다. 데이터를 주고받기 위한 이러한 규칙을 '프로토콜'이라고 부르며 세상에 존재하는 다양한 프로토콜 중 'TCP/IP'는 사실상 인터넷의 표준 프로토콜이라 할 수 있습니다. TCP/IP는 논리적으로 몇개의 계층구조로 나누어지는데 최상단 응용계층부터 링크(네트워크 접근) 계층까지 각 계층마다 층을 이루고 있으며 이러한 층을 'TCP/IP 스택'이라고 합니다. 웹 브라우저에서 부터 카톡과 같은 메신저나 유튜브 등 다양한 인터넷 서비스들이 이 'TCP/IP 프로토콜'을 통해 이루어지고 있습니다. ● 패킷 인터..

    [C#] Thread(스레드)와 Task(태스크)

    [C#] Thread(스레드)와 Task(태스크)

    1. 프로세스와 스레드 프로세스라 함은 실행파일이 실행되어 실행파일과 관련된 모든 데이터가 메모리에 적재되어 실행되는 상태를 말합니다. 프로세스는 자신만의 스레드를 가질 수 있으며 이 스레드로 프로그램에 필요한 동작을 수행합니다. 따라서 프로세스는 반드시 하나이상의 스레드를 가지며 스레드는 CPU가 프로그램 실행을 위해 시간을 할애하는 기본 단위가 됩니다. 프로그램이 내부에 여러작업을 수행해야 하는 경우라면 스레드를 여러 개 사용하는 '멀티스레드'를 구현합니다. 예를 들어 문서편집기 프로그램의 경우 사용자가 문서를 작성하고 있으면 주기적으로 자동 저장을 해야 할 때 문서작성용 스레드와 자동 저장을 수행하는 스레드가 각각 필요할 것입니다. 시간이 오래 걸리는 계산 작업을 수행하는 경우에도 사용자가 중간에 ..