C#
[C#] Entity Framework Core 로 Sqlite 사용하기
kjun.kr
2023. 6. 13. 23:17
728x90
Entity Framework Core 로 Sqlite 사용하는 방법입니다.
1. 'Microsoft.EntityFrameworkCore.Sqlite' Nuget Package 를 설치합니다.
(그새 버전이 올랐네요)

2. 테이블 구조를 정의합니다.
public class Employee
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
Id 필드는 키로 정의됩니다. 그렇지 않고 다른 필드를 키고 잡고 싶은 경우 [Key] 로 정의하면됩니다.
public class Employee
{
[Key]
public string Name { get; set; }
public int Age { get; set; }
}
3. DbContext 를 이용해 db 파일 지정하고 DbSet<Table> 필드를 만듭니다.
(DbSet<Table> 필드는 CRUD 에 사용합니다.)
public class MyDbContext : DbContext
{
public DbSet<Employee> Employees { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlite("Filename=mydb.db");
}
}
4. 사용하는 방법
신규 항목을 추가하는 코드
using (var db = new MyDbContext())
{
db.Database.EnsureCreated();
var employee = new Employee { Name = "Kang Jun", Age = 40 };
db.Employees.Add(employee);
db.SaveChanges();
}
전체코드
using System.ComponentModel.DataAnnotations;
using Microsoft.EntityFrameworkCore;
namespace EFTest
{
internal class Program
{
static void Main(string[] args)
{
using (var db = new MyDbContext())
{
db.Database.EnsureCreated();
var employee = new Employee { Name = "Kang Jun", Age = 40 };
db.Employees.Add(employee);
db.SaveChanges();
}
}
public class Employee
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
public class Employee2
{
[Key]
public string Name { get; set; }
public int Age { get; set; }
}
public class MyDbContext : DbContext
{
public DbSet<Employee> Employees { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlite("Filename=mydb.db");
}
}
}
}
결과


728x90