12월, 2019의 게시물 표시

[C#/EntityFrameworkCore] 닷넷 코어에서 Code First 마이그레이션 설정중 OnConfiguring을 오버라이드 할 수 없을 때 해결 방법 (+ SQLite UseSqlite 확장 메서드 사용 방법)

이미지
.Net Core EF 닷넷 코어도 당연히 닷넷 프레임워크와 같이 엔티티 프레임워크를 지원합니다. code-first 마이그레이션 역시 닷넷 프레임워크 EF와 굉장히 비슷합니다. 그러나, 패키지 설치 미스에 따라 곤란한 상황을 겪게 될 수도 있습니다. OnConfiguring 오버라이드 불가 그 문제는 바로 DbContext.OnConfiguring을 오버라이드해 사용해야 하는데, 정작 오버라이드할 DbContext 클래스의 OnConfiguring 메서드가 보이지 않는 문제입니다. OnModelCreating, OnChangeEventHandler등이 보이나, OnConfiguring은 보이지 않는 모습 왜 그럴까요? 사실, 생각해볼 것도 없이, 단순히 지금 여러분이 상속한 DbContext 클래스에 OnConfiguring 메서드가 없기 때문 입니다. 그렇다면 왜 없을까요? 여기서 바로 이 글 처음에 말했던 패키지 설치 미스가 나오게 됩니다. .Net Core EF Code-First를 사용하기 위해 필요한 패키지 닷넷 코어 엔티티 프레임워크를 사용하려면, 당연히 엔티티 프레임워크를 지원하는 DB의 라이브러리가 필요합니다. MySQL, MSSQL, SQLite, … 등등 많은 DB는 현재 엔티티 프레임워크를 지원하는 패키지를 NuGet에 배포하고 있습니다. 하지만, 거기서 끝이 아닙니다. 예를 들어 SQLite를 사용한다고 가정해볼까요? 여러분은 NuGet으로 System.Data.SQLite.Core, System.Data.SQLite.EF6 패키지를 설치할 겁니다. 만약 여기서 끝났다고 생각하고 DbContext를 만들면 위의 이미지와 같은 상황이 생기게 됩니다. 왜냐, System.Data.Entity.DbContext에는 OnConfiguration 메서드가 없기 때문입니다. 여러분이 제대로 된 DbContext를 상속받아 사용하시려면, Microsoft.EntityFrameworkCore 패키지 역시 설치