Fluent api 예제

냐옹·2024년 4월 9일
0

.NET

목록 보기
19/31

Fluent api 예제

modelBuilder.Entity()
.HasOne(p => p.Child)
.WithOne(c => c.Parent)
.HasForeignKey(c => c.ParentId);
Parent엔티티를 설정할 것이다. Parent 엔티티는 Child 엔티티와 1:1 관계를 가진다. 그리고 Child 엔티티의 ParentId는 Child엔티티의 주키는 아니고, Parent를 참조하기 위한 외래키이다.

modelBuilder.Entity()
.HasOne(a => a.AccountDetail)
.WithOne()
.HasForeignKey(ad => ad.AccountForeignKey);
Account 엔티티를 설정할 것이다. Account 엔티티와 AccountDetail은 1:1관계를 가진다. Account 안에서는 AccountDetail로의 단방향 네비게이션이 설정되지만, AccountDetail에서 Account로의 네비게이션 속성이 코드 상에서 정의되지 않았거나, 필요하지 않다는 것을 의미한다.
Account는 AccountDetail이 반드시 필요하지만, 반대는 성립하지 않는다. Account엔티티의 로직이나 데이터 접근 패턴에서는 관련 AccountDetail 정보에 접근할 필요가 있지만, AccountDetail에서는 Account 정보에 접근할 필요가 없는 경우가 이에 해당한다.

modelBuilder.Entity()
.HasMany(b => b.Posts)
.WithOne(p => p.Blog)
.HasForeignKey(p => p.BlogId);
이것은 Blog 엔티티에서의 설정을 수행한다. Post와 Blog는 N : 1 관계를 가지며, 서로 네비게이션을 가져서 데이터 접근이 가능하다. 그리고 Post는 Blog 로의 정보 접근이 가능하도록 네비게이션이 설정되어있다.

modelBuilder.Entity()
.HasMany(c => c.Students)
.WithOne();
Course 엔티티를 설정할 것이다. Course와 Student는 1:N 관계를 가진다. Course에

modelBuilder.Entity()
.HasMany(d => d.Employees);

modelBuilder.Entity()
.HasMany(a => a.Books)
.WithMany(b => b.Authors)
.UsingEntity(
j => j
.HasOne(ab => ab.Book)
.WithMany(b => b.AuthorBooks)
.HasForeignKey(ab => ab.BookId),
j => j
.HasOne(ab => ab.Author)
.WithMany(a => a.AuthorBooks)
.HasForeignKey(ab => ab.AuthorId),
j =>
{
j.ToTable("AuthorBooks");
});

modelBuilder.Entity()
.HasMany(s => s.Courses)
.WithMany(c => c.Students)
.UsingEntity(
j => j.HasOne(sc => sc.Course).WithMany(),
j => j.HasOne(sc => sc.Student).WithMany())
.Property(sc => sc.EnrollmentDate);

modelBuilder.Entity()
.HasMany(r => r.Magazines)
.WithMany(m => m.Readers)
.UsingEntity(
j => j
.HasOne(s => s.Magazine)
.WithMany(),
j => j
.HasOne(s => s.Reader)
.WithMany())
.Property(s => s.SubscriptionDate);

0개의 댓글

Powered by GraphCDN, the GraphQL CDN