EntityFramework Core (DotNet에서 Persistence storage 를 관리 하는 일반적인 방법)
EntityFramework Core
Dotnet 에서는 Database 를 관리 하는 일반적인 방법으로 EntityFrameworks core 가 있다.
EF Core는 다음과 같은 O/RM(개체 관계형 매퍼)으로 사용될 수 있다.
- .NET 개발자가 .NET 개체를 사용하여 데이터베이스로 작업할 수 있도록 한다.
- 개발자가 일반적으로 작성해야 하는 대부분의 데이터 액세스 코드가 필요하지 않다.
지원하는 Database 는 링크를 참조하자.
설치
1. mssql 에 대한 DB 공급자 설치
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
2. EF 관련도구 설치
dotnet tool install --global dotnet-ef
** 업데이트가 필요하다면 dotnet tool update 명령을 사용한다. **
dotnet tool update --global dotnet-ef
3. EF design 패키지 설치
dotnet add package Microsoft.EntityFrameworkCore.Design
패키지 설치시 오류가 발생하면
Solution Explorer -> 프로젝트 선택 --> Dependencies --> packages 를 마우스 오른쪽 버튼클릭 context menu 에서 Manage nuget packages 선택
Microsoft.EntityFrameworkCore.Design
검색 후 설치 하자
**항상 런타임 패키지의 주 버전에 부합하는 도구 패키지 버전을 사용하자.**
Context 추가 및 Model 추가
1. Infrastructure folder 추가
2. MyDbContext.cs 추가
public class MyDbContext:DbContext { public MyDbContext() { } protected MyDbContext(DbContextOptions options) : base(options) { } public MyDbContext(DbContextOptions<MyDbContext> options) : base(options) { } public virtual DbSet<User> Users { get; set; } }
3. Models folder 추가
4. User.cs 추가
public class User { public string Id { get; set; } = string.Empty; public string Name { get; set; } = string.Empty; public string Email { get; set; } = string.Empty; }
5. DbSchema mapping
MyDbContext.cs 에 다음 추가
protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.HasAnnotation("Relational:Collation", "SQL_Latin1_General_CP1_CI_AS"); modelBuilder.Entity<User>(entity => { // Table 이름은 User 로 한다. entity.ToTable("User"); // Primary key 는 Id 이다. entity.HasKey(e => e.Id); // Id 는 필수 값이다. // Id 는 varchar 형태로 20 length 이다. entity.Property(e => e.Id) .IsRequired() .IsUnicode(false) .HasMaxLength(20); // Name 은 256 length 를 갖는 nvarchar 형태이다. entity.Property(e => e.Name) .HasMaxLength(256); // Email 은 256 length 를 갖는 nvarchar 형태이다. entity.Property(e => e.Email) .HasMaxLength(256); }); }
5. AddDbContext
Program.cs 에 다음 추가
builder.Services.AddDbContext<MyDbContext>(options => options.UseSqlServer(connectionString));
6. appsettings.json 에 다음 추가
"ConnectionStrings": { "DbServer": "Server=(localdb)\\mssqllocaldb;Database=EFCoreTest;Trusted_Connection=True;" }
7. 개발자 명령 프롬프트 실행
migration
dotnet ef migrations add InitialCreate --context MyDbContext
--output-dir Migrations/MySqlMigrations
--project ScrutorTest
--startup-project ScrutorTest
database update
dotnet ef database update --context MyDbContext
--project ScrutorTest
--startup-project ScrutorTest
--project 에 project 명 기입
--startup-project 에 appsettings.json 이 존재하는 project 기입 해당 정보를 통해 db 연결
8. SQL Server 확인
다음 시간에는
EF core 의 ORM 을 이용한 Linq Query 생성을 확인해 보겠습니다.
관련영상


댓글
댓글 쓰기