728x90
public class ItemOption
{
public int Str { get; set; }
public int Dex { get; set; }
public int Hp { get; set; }
}
public class Item
{
public ItemOption Option { get; set; }
// ... //
}
items[0].Option = new ItemOption() { Dex = 1, Hp = 2, Str = 3 };
예시 상황이다. AppDbContext에 둘 중 하나를 추가해주면 된다.
1️⃣ OwnsOne
builder.Entity<Item>()
.OwnsOne(i => i.Option);
이를 추가해서 새로운 테이블을 만들면, Option_Str, Option_Dex, Option_Hp이라는 새로운 열이 추가된 것을 볼 수 있다. Item 테이블 안에 새로운 열이 생긴다.
2️⃣ ToTable
builder.Entity<Item>()
.OwnsOne(i => i.Option)
.ToTable("ItemOption");
ToTable을 추가해서 새로운 테이블을 만들면 Item 테이블과 별개로 새로운 테이블인 ItemOption이 생성된다. 이 안에 Str, Dex, Hp가 들어있는 것을 확인할 수 있다.
728x90
'공부 > EFCore' 카테고리의 다른 글
[EFCore] 다수의 Entity Class를 하나의 테이블에 매핑하기 (0) | 2022.09.08 |
---|---|
[EFCore] 상속 관계를 매핑해보자 : Table Per Hierarchy (THP) 만들기 (0) | 2022.09.08 |
[EFCore] Shadow Property와 Backing Field (0) | 2022.09.07 |
[EFCore] 다수의 Navigational Property가 같은 클래스를 참조하는 상황, 어떻게 대처할까 (0) | 2022.09.07 |
[EFCore] Convention을 알아보자 (0) | 2022.09.06 |