Closed SAgiKPJH closed 2 months ago
Youtube Link : https://www.youtube.com/watch?v=OzZJqVQrVU0&list=PLBapd_vePld_986VHC2UbcPY4Q2j9-lpT&index=1
Add Solution https://github.com/SagiK-Repository/Learn_CleanArchitecture/commit/f21c3ceb1f864ead53f1fc8e5f4dfee2f707a70d
패키지 관리자 콘솔 : add-migration InitialMigration
![]()
- Add Migration eb28dd39de69dc3be53abdaeccafb93387702c78
- 수동 Server 등록할 경우 https://github.com/SagiK-Repository/Learn_CleanArchitecture/issues/12#issuecomment-2050365566
- SQL Server 개체 탐색기에 기제된 Database와 같은 이름으로 등록합니다. 7a4620fe8100e0042e989e75d567a5b351f7a8e1
- 보기 > SQL Server 개체 탐색기
패키지 관리자 콘솔 : update-database
PM> remove-migration PM> add-migration AddedMoviesRentalMembers
- 기존의 만들었던 DB 제거
PM> update-database
데이터베이스에서의 관계들을 정의할 때, "One to Many"와 "Many to Many"는 매우 중요한 개념입니다. 이러한 관계들은 엔티티 간의 연결 방식을 정의하고, 데이터가 어떻게 관련되어 있는지를 명확히 합니다.
"One to Many" 관계는 한 엔티티가 다른 엔티티 여러 개와 관계를 가질 수 있음을 의미합니다. 예를 들어, 한 명의 회원(Member)이 여러 번의 대여(Rental)를 할 수 있는 경우입니다. 여기서 회원은 "One" 쪽이고, 대여는 "Many" 쪽입니다.
이 관계를 사용하는 이유는 다음과 같습니다:
"Many to Many" 관계는 두 엔티티 그룹이 서로를 여러 번 참조할 수 있음을 의미합니다. 예를 들어, 한 번의 대여(Rental)에 여러 편의 영화(Movie)가 포함될 수 있고, 한 편의 영화는 여러 번 대여될 수 있는 경우입니다. 여기서 대여와 영화 모두 "Many" 쪽에 속합니다.
이 관계를 사용하는 이유는 다음과 같습니다:
이러한 관계들은 데이터베이스 설계에서 중요한 역할을 하며, 엔티티 간의 관계를 명확히 하고 데이터의 중복을 방지하며, 데이터 관리의 효율성과 유연성을 높이는 데 도움을 줍니다.
[1] 티스토리 - ManyToOne과 @OneToMany로 배우는 JPA 기초 사용법 (https://stir.tistory.com/158) [2] Learn Microsoft - 일대다 관계 - EF Core (https://learn.microsoft.com/ko-kr/ef/core/modeling/relationships/one-to-many) [3] velog - JPA - 다대다 연관관계 (https://velog.io/@yuseogi0218/JPA-%EB%8B%A4%EB%8C%80%EB%8B%A4-%EC%97%B0%EA%B4%80%EA%B4%80%EA%B3%84) [4] TISTORY - [JPA] @ManyToMany, 다대다[N:M] 관계 - 개발자의 기록습관 (https://ict-nroo.tistory.com/127)
제공된 코드 조각에서 사용된 함수들은 Entity Framework Core (EF Core)의 데이터 모델링을 위한 API를 사용하여 데이터베이스 스키마를 정의하는 데 사용됩니다. 각 함수의 의미는 다음과 같습니다:
OnModelCreating(ModelBuilder modelBuilder)
ModelBuilder
인스턴스를 사용하여 엔티티 간의 관계를 정의하고, 키, 인덱스, 테이블 매핑 등을 설정할 수 있습니다.modelBuilder.Entity<Member>()
Member
엔티티에 대한 설정을 시작합니다. Entity<T>
메서드는 특정 엔티티 타입 T
에 대한 구성을 정의하는 데 사용됩니다. 여기서는 Member
클래스에 대한 설정을 정의할 것입니다..HasOne<Rental>(s => s.Rental)
HasOne
메서드는 "One to Many" 관계의 "One" 쪽을 정의합니다. 여기서는 Member
엔티티가 하나의 Rental
엔티티를 가질 수 있음을 나타냅니다. s => s.Rental
은 Member
엔티티 내에서 Rental
엔티티를 참조하는 속성을 지정합니다..WithMany(r => r.Members)
WithMany
메서드는 "One to Many" 관계의 "Many" 쪽을 정의합니다. 이 경우, 하나의 Rental
엔티티가 여러 Member
엔티티와 관련될 수 있음을 의미합니다. r => r.Members
는 Rental
엔티티 내에서 여러 Member
엔티티를 참조하는 컬렉션 속성을 지정합니다..HasForeignKey(s => s.RentalId)
HasForeignKey
메서드는 외래 키 속성을 정의합니다. 이 경우, Member
엔티티 내의 RentalId
속성이 Rental
엔티티의 기본 키를 참조하는 외래 키로 사용됩니다. 이를 통해 Member
와 Rental
사이의 관계가 연결됩니다.modelBuilder.Entity<MovieRental>().HasKey(g => new {g.RentalId, g.MovieId});
MovieRental
엔티티에 대한 복합 키를 정의합니다. HasKey
메서드는 엔티티의 기본 키를 정의하는 데 사용됩니다. 여기서는 RentalId
와 MovieId
속성의 조합으로 복합 키를 구성하여, "Many to Many" 관계를 구현하는 데 사용되는 연결 테이블(MovieRental
)의 기본 키를 정의합니다.이러한 메서드들을 사용하여, EF Core를 통해 데이터베이스의 테이블, 엔티티 간의 관계, 그리고 기타 구성 요소들을 정의하고 관리할 수 있습니다.