[EFCore] Convention을 알아보자
·
공부/EFCore
✅ Convention 1️⃣ Entity Class 관련 내용 - Public + Non-static 이어야 한다. - property 중에서 public getter를 찾으며 분석한다. -property 이름 = table column 이름으로 생선된다. 2️⃣ 이름, 크기, 형식 - .NET 형식 🔁 SQL 형식(int, bool)이 자동으로 변환된다. - .NET 형식의 기본 Nullable 여부를 따라간다. 3️⃣ PRIMARY 관련 - Id 혹은 Id 로 정의된 property가 Primary Key로 설정된다. (후자를 추천한다. C# 코딩할 때 이름 구분이 가야 편리하다.) - 복합키(Composite Key)는 Convention으로 처리 불가하다.
[EFCore] 데이터를 임시로 삭제해보자 : Soft Delete (HasQueryFilter/IgnoreQueryFilter)
·
공부/EFCore
게임에서 아이템을 실수로 삭제하면 복구해주는 경우가 있다. 만약 우리가 아이템을 '삭제'한 게 정말 'Delete'를 의미했다면 복구가 불가능했을 것이다. 이럴 때 사용할 수 있는 게 바로 HasQueryFilter다. public class Item { public bool SoftDeleted { get; set; } //...// } Item 클래스에 SoftDeleted를 추가해준다. true가 임시 삭제를 의미하고, false가 기본값이다. protected override void OnModelCreating(ModelBuilder builder) { // 앞으로 Item Entity에 접근할 때 항상 사용되는 모델 레벨의 필터링 // 필터를 무시하고 싶으면 IgnoreQueryFilter사용..
[EFCore] Relationship Data 수정 하기
·
공부/EFCore
1️⃣ 1 대 1 관계에서 데이터 수정 Player는 하나의 Item만 소지할 수 있다. Player의 아이템 명을 변경해보자. public static void Update_1v1() { ShowItems(); Console.WriteLine("Input ItemSwitch PlayerId"); Console.Write(" > "); int id = int.Parse(Console.ReadLine()); using (AppDbContext db = new AppDbContext()) { Player player = db.players .Include(p => p.Item) // Include가 빠지면 Item이 Player를 참조하고 있다는 사실을 알 수 없어 Error 발생 .Single(p => p..