본문 바로가기

분류 전체보기

(18)
EFCore - Migration_01 #Part14 학습 내용 Migration - Code Frist // Migration //현재 버전 v1.1(라이브) // SQL Scripts //v1.2(현재) // SQL Scripts 버전을 따로따로 관리해줘야함. //롤백하는것도 만들어야함. // // 일단 EF CORE DbContext DB 상태에 대해 동의가 있어야 함. // DBContext의 테이블은 Item, player, Guild 이지만 // 실질적인 DB의 테이블이 Item, Player만 있다면 안된다. // 또한 똑같은 테이블 목록이 있다 하더라도 // Property(재산)이 다르다면 안된다. // 쉽게 말해 EF CORE DbContext DB 이 두개의 테이블, 재산은 비동기가 아니라면 // 무조건 동일 해야한다. // 누구 기준으..
EFCore - Default Value #Part13 학습 내용 Default Value 차례 Auto-Property Initializer(C# 6.0) (일반적으로 가장 많이 사용함) Fluent Api (이것도 많이사용함.) SQL Fragment (실시간으로 호출됨) Value Generator 초기값 Default Value // int 초기값이 0 이고 , bool은 false인것처럼 // 특정 값의 초기값을 설정한다. // 기본값 설정하는 방법이 여러가지 있다. // 주의해서 볼것 // 1) Entity Class 자체의 초기값으로 붙는지? // 2) DB Table 차원에서 초기값으로 적용 되는지? // - 코드메모리상에서 적용된뒤 SaveChagne로 되는가? // - DB에서 초기값을 세팅하는가? // 결국 결과는 같은거 아닐까? // -..
EFCore - Baking Field + Relationship #Part12 학습 내용 Baking Field + Relationship 차례 ReviewSystem // Backing Field + RelationShip // Backing Field -> Private field를 DB에 맵핑 // Navigation Property 에서도 사용 가능! Review Class를 외부에 만들어주고 Item 안에 리뷰를 저장할 Property를 만들어준다. Option에서는 해당 Propery를 Field로 만들어주고 아이템에 리뷰 DB를 수정해주면 다음과 같이 아이템에 리뷰 점수의 평균값을 저장할수 있게 된다. DB를 보자면 일단 외부 Property 임으로 테이블에 만들어진걸 알수있다.
EFCore - Entity Class & Table Mapping #Part11 학습 내용 Entity Class & Table Mapping 차례 Owned Type Table Per Hierarchy (TPH) - 사용하기 가장 편함. Table Slitting 1. Owned Type // - 일반 Class를 Entity Class에 추가하는 개념 // a) 동일한 테이블에 추가 // - .OwnsOne() = Fluent Api 에서 사용 // - Relationship 방식은 .include()를 사용했는데. // - OwnsOne()은 Ownership의 개념이기 때문에 .include() 할필요가 없다. // B) 다른테이블 추가 // - .OwnsOne().ToTable() 외부에 Property 가 있으나 아이템 테이블에 소속 되고싶을때 보통의 경우 해당 ItemO..
EFCore - Shadow Property & Backing Field #Part10 학습 내용 Shadow Property & Backing Field 차례 Shadow Property Backing Field 1.Shadow Property // Shadow Property // Class 모델에는 있지만 DB에는 없는 경우 -> [NotMapped] .Ignore(),SoftDeleted 같지만 반대되는 의미 // DB에는 있지만 Class에는 없는 경우를 원할수있음 - > Shadow Property // 생성 -> .Property("RecoveredData") 매우간단 최고 등급인 Fluent Api에서 사용 ItemModel 에서는 RecoveredData가 Property로 없지만 DB에는 존재함 2.Backing Field // Backing Field (EF Core 넘..
EFCore - Relationship Configuration #Part9 학습 내용 Relationship Configuration DB Model 1. Item 기존 Item 모델 테스트를 위한 신규 아이템 모델 2. Player 3. Guild DB 테이블 1.Item 2.player 3.Guild 차례 Convention을 이용한 FK 설정 Convention 방식으로 못하는것 Data Annotation Fluent Api로 RelationShip 설정 Convention을 이용한 FK 설정 1) PlayerId 2) PlayerPlayerId 3) OwnerPlayerId OwnerId 2.Convention 방식으로 못하는것 1) 복합키 2) 다수의 Naviational Property가 같은 클래스를 참고할때 Item을 보면 오너라는것을 가르키는걸 볼수있는데 다른..
EFCore - Data Modelin config #Part8 학습 내용 1:1 방식의 Update와 1:다 방식의 Update차이 DB Model 1. Item 기존 Item 모델 테스트를 위한 신규 아이템 모델 2. Player 3. Guild DB 테이블 1.Item 2.player 3.Guild 차례 Convention DataAnnotation Fluent Api - 한번에 묶어서 //오늘의 주제 : Configuration 중요함 //A) Convention (관례) //- 각종 형식과 이름들을 정해진 규칙에 맞게 만들면 , EF Core에서 알아서 처리함 //- 쉽고 빠르지만 , 모든 경우를 처리 할 수는 없다. // 테이블을 만들때 Class + Id (itemId)를 만들어 자동으로 PK로 사용한단던가! // 규칙의 의해서 만들어진것들 //B) Da..
EFCore - Delete #Part7 학습 내용 Delete 와 Soft Delete의 차이 DB Model 1. Item 기존 Item 모델 테스트를 위한 신규 아이템 모델 2. Player 3. Guild DB 테이블 1.Item 2.player 3.Guild 차례 Delete SoftDelete 1. Delete 결과물 당연하게도 Nullble의 상태에 따라 Onwer도 삭제될 가능성이 있다. 그렇기에 Item.OnwerID FK를 Nullble로 설정해야지 아이템을 DB에서 삭제한다고하더라도 플레이어가 삭제되지 않도록해야한다. 2. SoftDelete DB에 내가 삭제되었는지 아닌지 여부를 체크한다. 하지만 SoftDelete를 하나하나 체크하면서 가져오기엔 사람의 실수가 있을 수 있고 코드도 번거러워진다! AppDBContext에 ..