Entity Framework
EF 4.X 강의 소스는 다음 경로에 있습니다.
Entity Framework 소개
Entity Framework (EF)는 .NET Framework에서 데이터 액세스를 쉽게 만들어 주는 ORM (Object-Relational Mapping) 도구입니다. .NET Framework 4.X 버전에서 사용되는 EF 버전은 주로 EF 6.x입니다. 이 강좌에서는 EF 6.x를 사용하여 기본적인 CRUD (Create, Read, Update, Delete) 작업을 수행하는 방법에 대해 설명하겠습니다.
1. 프로젝트 설정 및 Entity Framework 설치
- Visual Studio를 열고 새 프로젝트 생성을 클릭합니다.
- 'C#'에서 Windows를 선택한 다음 'Console App (.NET Framework)'을 선택합니다.
- 프로젝트 이름을 입력하고 생성을 클릭합니다.
- 프로젝트가 생성되면, NuGet 패키지 관리자를 사용하여 Entity Framework을 설치합니다. 이를 위해 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 NuGet 패키지 관리를 선택한 다음
EntityFramework
를 검색하여 설치합니다.
2. 데이터 모델 생성
Entity Framework에서는 데이터베이스 테이블을 반영하는 클래스를 만들어야 합니다. 예를 들어, Student
라는 클래스를 만들어 학생 정보를 저장하는 테이블을 관리할 수 있습니다.
public class Student
{
public int StudentID { get; set; }
public string StudentName { get; set; }
public DateTime DateOfBirth { get; set; }
// 다른 속성들...
}
3. DbContext 클래스 생성
DbContext 클래스는 EF에서 데이터베이스와의 작업을 코디네이트하는 주요 클래스입니다. 이 클래스는 모델 클래스의 인스턴스를 관리하고 데이터베이스와의 모든 상호 작용을 처리합니다.
public class SchoolContext : DbContext
{
public SchoolContext() : base("SchoolDBConnectionString")
{
}
public DbSet<Student> Students { get; set; }
// 다른 DbSet 속성들...
}
여기서 "SchoolDBConnectionString"
은 App.config
또는 Web.config
파일에 정의된 데이터베이스 연결 문자열의 이름입니다.
4. 데이터베이스 연결 설정
App.config
파일에 데이터베이스 연결 문자열을 추가합니다. SQL Server를 사용한다고 가정하면, 연결 문자열은 다음과 같을 수 있습니다.
<connectionStrings>
<add name="SchoolDBConnectionString"
connectionString="data source=.;initial catalog=SchoolDB;integrated security=True;"
providerName="System.Data.SqlClient" />
</connectionStrings>
5. 데이터베이스 마이그레이션 및 초기화
EF6에서는 Code First Migrations를 사용하여 데이터베이스 스키마를 관리할 수 있습니다. Package Manager Console에서 다음 명령을 실행합니다:
enable-migrations
- 마이그레이션을 활성화합니다.add-migration InitialCreate
- 초기 마이그레이션을 생성합니다.update-database
- 마이그레이션을 적용하여 데이터베이스를 생성 또는 업데이트합니다.
6. CRUD 작업
이제 기본적인 CRUD 작업을 수행하는 방법을 살펴보겠습니다.
생성 (Create)
using (var context = new SchoolContext())
{
var student = new Student() { StudentName = "New Student", DateOfBirth = DateTime.Now };
context.Students.Add(student);
context.SaveChanges();
}
읽기 (Read)
using (var context = new SchoolContext())
{
var students = context.Students.ToList();
foreach (var student in students)
{
Console.WriteLine(student.StudentName);
}
}
업데이트 (Update)
using (var context = new SchoolContext())
{
var student = context.Students
.FirstOrDefault(s => s.StudentID == 1);
if (student != null)
{
student.StudentName = "Updated Name";
context.SaveChanges();
}
}
삭제 (Delete)
using (var context = new SchoolContext())
{
var student = context.Students.FirstOrDefault(s => s.StudentID == 1);
if (student != null)
{
context.Students.Remove(student);
context.SaveChanges();
}
}
마무리
이 강좌에서는 Entity Framework 6.x의 기본적인 사용 방법을 다루었습니다. 실제 프로젝트에서는 데이터 모델의 복잡성, 데이터베이스 성능 요구 사항, 동시성 처리 등 추가적인 고려 사항들이 있을 수 있습니다. Entity Framework는 이러한 고급 주제들을 포괄적으로 다루는 다양한 기능과 설정을 제공합니다.