환경설정 콘솔앱(.net core) 새 프로젝트를 만든 후 Microsoft.EntityFrameworkCore.SqlServer를 설치한다. DB연동 Databases 우클릭 후 MyDB라는 이름의 새 데이터베이스를 만들어 준 후 속성의 Connection string에 있는 문자열을 복사해서 코드의 public const string Conn
코드 변경 DbCommands Program InitializeDB를 DbCommands 클래스에 옮긴 후 Main에서 static 함수를 호출하는 식으로 수정했다. CreateTestData 함수를 호출하면 Name 프로퍼티가 Strevelun인 플레이어 객체를 하나 생성한 후 item List를 선언하여 Item 객체를 생성함과 동시에 리스트에...
DataModel AppDbContext DbCommands
DataModel DbCommands
작성중
State 이미 존재하는 사용자를 외래키로 연동하는 법 1) Tracked Instance(추적되고 있는 객체)를 얻어옴. 위 코드에서 Rookiss 이름을 가진 Player 객체를 얻어와서 owner에 넣어줌. 2) 데이터 연결. Item 객체를 하나 만들고 Item 객체의 외래키인 Player Owner에 방금 얻어온 Player 객체인 owner...
Connected vs Disconnected Disconnected update Update 3단계 지난 시간에 Update 과정은 3단계로 이루어진다고 배웠다. tracked entity를 얻어옴 entity 클래스의 property를 변경 SaveChanges 호출 설명 Update 단계가 1, 2, 3단계 연속해서 일어나지 않고, 중간에...
복습 Principal Entity 위 DataModel에서 Item이 Player를 외래키로서 가리키고 있는 상태이다. 따라서 이런 entity를 주 entity라고 한다. Dependent Entity 외래 키 속성을 포함하는 Entity이다. 관계에서 '자식'이라고도 한다. Microsoft Docs 관계 - EF Core Dependent ...
Soft Delete 게임에서 DB에 존재하는 아이템을 삭제할 때 진짜 Remove를 통해 삭제를 하는 것이 아닌, bool 프로퍼티를 정의하고 삭제되었을 경우 true로 세팅하는 식으로 구현한다. 위와 같이 필터링을 해주면 SoftDeletd가 false인 아이템만 출력하게 할 수 있다. 필터 무시
Configuration Convention 각종 형식과 이름 등을 정해진 규칙에 맞게 만들면, EF Core에서 알아서 처리해준다. 쉽고 빠르지만, 모든 경우를 처리할 수는 없다. 규칙 Entity class 관련 public 접근 한정자와 non-static 멤
기본 용어 복습 principal key = 주키 또는 Unique한 Alternate key required relationship : Non-null optional relationship : nullable Convention을 이용한 외래키 설정 Item entity 클래스에서 외래키의 이름을 설정하는 방식에는 3가지가 있다. 강의에서는 3번째...
Shadow Property Entity class에는 있지만 DB에는 없도록 설정하고 싶으면 [NotMapped] or .Ignore()을 이용했다. 이번에는 DB에는 존재하지만 Class에는 없도록 설정하도록 하고 싶으면 어떻게 하는지 알아보자 위 코드로 세팅해주면 DB의 Item에 새로운 열이 추가된 것을 볼 수 있다. getter/setter...
주제 Entity와 DB Table 간 연동하는 다양한 방법들에 대해 알아보자 Entity class 하나를 통으로 Read/Write하는 것은 부담이 되기 때문에 이전 시간에 Select Loading, DTO를 활용했었다. 하지만 이 외에도 기본적인 방법들이 몇가
주제 backing field란 private field를 DB에 매핑하는 것을 말한다. 추가로 Navigation property에서도 사용 가능하다 DataModel AppDbContext
정의 우리가 직접 만든 SQL을 호출하게 하는 기능이다. 연산을 DB쪽에서 하도록 떠넘기고 싶을 때 사용한다. 또 EF Core 쪽에서 비효율적인 쿼리를 짤 수 있을 때 우리가 직접 정의할 수 있다. SQL 쿼리를 만든 후 DB에 등록하고 등록한 함수를 호출하도록
초기값 (default value) 초기값을 설정하는 방법 Auto-Property Initializer (C# 6.0) Entity 차원의 초기값을 설정해주는 것이기 때문에 SaveChanges 해주기 전까지 DB에는 적용이 되지 않고 공백으로 남아있다. Fluent API SQL Fragment 새로운 값이 추가되는 시점에 DB쪽에서 실행 외...
Migration EF Core DbContext와 DB 상태에 대해 동의가 있어야 한다. 즉 어떤 것이 원본이고 어떤 것을 기준으로 할 것인지 정할 필요가 있다. Code-First 말그대로 코드를 원본으로 생각하는 것이다. 코드를 기준으로 DB를 설계하도록 하기 때문에 어떤 데이터가 삑사리가 나면 DB에서 잘못된 것으로 간주한다. Migration...
DB-First EF Core로 만든 DB가 아닌 다른 프로젝트에서 사용하던 DB를 가져온 경우, 우리가 DbContext를 만들어서 연동하려고 한다면 문제가 발생한다. 이런 경우 DB를 분석해서 역으로 DbContext를 생성해야 한다. https://marketplace.visualstudio.com/items?itemName=ErikEJ.EFCor...