콘솔로 프로젝트를 생성한 후 Microsoft.EntityFrameworkCore.Sqlite
및 Microsoft.EntityFrameworkCore.Tools
패키지를 설치한 후
테이블이 될 모델과
| TodoInfo.cs
[Table(nameof(TodoInfo))]
[Index(nameof(IsComplete))]
[Index(nameof(TargetDate))]
public class TodoInfo
{
/// <summary>
/// 아이디 (PK)
/// </summary>
[Key]
public string Id { get; set; } = Guid.NewGuid().ToString();
/// <summary>
/// 내용
/// </summary>
public string Detail { get; set; } = "";
/// <summary>
/// 완료유무
/// </summary>
public bool IsComplete { get; set; }
/// <summary>
/// 삭제유무
/// </summary>
public bool IsDeleted { get; set; }
/// <summary>
/// 목표일
/// </summary>
public DateOnly? TargetDate { get; set; }
/// <summary>
/// 완료일
/// </summary>
public DateOnly? CompletedDate { get; set; }
}
DbContext 코드를 생성합니다.
| TodoContext.cs
public class TodoContext : DbContext
{
public DbSet<TodoInfo> Todos { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlite("Data Source=data.db");
}
}
패키지 관리자 콘솔에서 Add-Migration first
를 해서 first
라는 마이그레이션을 만들고 Update-Database
를 하면 data.db
가 생깁니다.
Db Browser for SQLite
를 이용해 data.db
를 살펴보면 다음처럼 TodoInfo
라는 테이블이 잘 생성되었음을 확인할 수 있으며,

간단하게 다음 코드를 통해
using var db = new TodoContext();
for (var i = 0; i < 10000; i++)
{
var newTodo = new TodoInfo
{
Detail = $"간단한 EFCore 샘플 만들기 : {i + 1}",
TargetDate = new DateOnly(2022, 5, 13)
};
db.Todos.Add(newTodo);
}
db.SaveChanges();
실행 한 후 데이터를 조회하면 잘 데이터가 인서트되어 있음을 확인할 수 있습니다.