본문 바로가기
Languages/C#

Day 12: Entity Framework 소개 및 구현

by 반도체는 프로그래밍을 좋아해 2023. 4. 14.
728x90

Entity Framework는 .NET 프레임워크에서 데이터베이스와 상호작용을 할 수 있는 ORM(Object-Relational Mapping) 프레임워크입니다. 데이터베이스와 상호작용할 때 LINQ(Language Integrated Query)를 사용하여 SQL을 작성하지 않아도 되므로 개발자들은 더욱 쉽게 데이터베이스를 다룰 수 있습니다. *LINQ에 관한 글은 아래 글을 참조해주세요.

2023.04.14 - [Languages/C#] - C# LINQ( Language-Integrated Query )

 

C# LINQ( Language-Integrated Query )

C# LINQ(언어 인티그레이티드 쿼리)(Language-Integrated Query)은 C# 언어의 확장된 기능 중 하나로, 데이터를 검색, 추출, 정렬 및 필터링할 수 있는 강력한 도구입니다. LINQ를 사용하면 데이터에 대한 쿼

sunmin.tistory.com



Entity Framework는 Code First, Model First, Database First 세 가지 방법으로 데이터 모델을 생성할 수 있습니다. 

Code First는 클래스로부터 데이터베이스를 생성하는 방식이며, 

Model First는 ERD(Entity Relationship Diagram)로부터 클래스를 생성하는 방식입니다. 

Database First는 이미 생성된 데이터베이스로부터 클래스를 생성하는 방식입니다.

728x90


이번 예시에서는 반도체 제조 업체의 생산 공정 관리 시스템에서 Entity Framework를 사용하여 생산 데이터를 관리하는 방법을 살펴보겠습니다.

1. 데이터베이스 준비
생산 데이터를 저장하기 위해 SQL Server 데이터베이스를 준비합니다. 데이터베이스 이름은 "SemiconductorProduction"이라고 가정합니다.

2. Visual Studio 프로젝트 생성
Visual Studio에서 새로운 WPF 프로젝트를 생성합니다. 프로젝트 이름은 "SemiconductorProductionSystem"이라고 가정합니다.

3. Entity Framework 설치
NuGet 패키지 관리자를 이용하여 Entity Framework 패키지를 설치합니다. 패키지 매니저 콘솔에서 다음 명령어를 실행하여 Entity Framework 패키지를 설치할 수도 있습니다. 아니면 NuGet 패키지 관리자를 열어 Entitiy를 검색하여 설치하셔도 됩니다.

Install-Package EntityFramework

4. 데이터베이스 연결 설정
App.config 또는 Web.config 파일에 데이터베이스 연결 문자열을 추가합니다.

<connectionStrings>
  <add name="SemiconductorProductionEntities" 
       connectionString="Data Source=(local);Initial Catalog=SemiconductorProduction;Integrated Security=True"
       providerName="System.Data.SqlClient" />
</connectionStrings>

5. 모델 클래스 생성
생산 데이터를 저장할 모델 클래스를 생성합니다.

public class SemiconductorProduction
{
    public int Id { get; set; }
    public DateTime Date { get; set; }
    public string Product { get; set; }
    public int LotNumber { get; set; }
    public double Yield { get; set; }
}

6. DbContext 클래스 생성
DbContext 클래스는 Entity Framework의 핵심 클래스로서 데이터베이스와 상호작용할 때 사용됩니다.

public class SemiconductorProductionContext : DbContext
{
    public DbSet<SemiconductorProduction> Productions { get; set; }

    public SemiconductorProductionContext() : base("SemiconductorProductionEntities")
    {
        Database.SetInitializer(new DropCreateDatabaseIfModelChanges<SemiconductorProductionContext>());
    }
}

7. 데이터추가
생산 데이터를 추가해보겠습니다. 생산 데이터를 추가하기 위해서는 Add 메서드를 사용합니다. Add 메서드는 데이터베이스에 새로운 엔티티를 추가합니다.

using (var context = new ProductionContext())
{
    // 새로운 생산 데이터 생성
    var production = new Production
    {
        WaferId = "ABC123",
        LotId = "LOT001",
        ProcessStep = "ETCH",
        ProcessTime = DateTime.Now
    };

    // 생성한 데이터를 데이터베이스에 추가
    context.Productions.Add(production);

    // 변경 내용을 데이터베이스에 저장
    context.SaveChanges();
}

위 코드에서 Production은 이전에 만들었던 엔티티입니다. 여기서 엔티티는 하나의 객체를 나타내는 용어입니다.  Add 메서드를 사용하여 새로운 Production 객체를 생성하고, context.Productions에 추가합니다. 마지막으로 SaveChanges 메서드를 호출하여 변경 내용을 데이터베이스에 저장합니다.

위 코드를 실행하면 Productions 테이블에 새로운 데이터가 추가됩니다.

결론


이렇게 Entity Framework를 사용하면 데이터베이스와 C# 코드를 쉽게 연동할 수 있습니다. Entity Framework는 LINQ를 지원하므로, LINQ를 사용하여 쉽게 데이터를 조회하거나 필터링할 수도 있습니다. 또한 데이터베이스 스키마를 변경하더라도 C# 코드를 수정할 필요가 없으므로 유지보수가 용이합니다.

728x90

'Languages > C#' 카테고리의 다른 글

C# 다양한 LINQ Query 연산자  (0) 2023.04.14
C# LINQ( Language-Integrated Query )  (0) 2023.04.14
C# WPF Path 그리기(2)  (0) 2023.04.12
C# WPF Path 그리기(1)  (0) 2023.04.12
Day 11: 데이터베이스 연동 - MongoDB 설치 및 연결  (0) 2023.04.12