문제풀이 p.635 총점 (41 / 50) 여러분의 답변은 대부분 정확하거나 근접했지만, 일부 답변에서는 더 명확하거나 상세한 설명이 필요했습니다. Entity Framework Core를 사용하는 데 있어 기본적인 개념을 잘 이해하고 있으며, 약간의 추가 학습을 통해 더욱 향상될 수 있을 것으로 보입니다.
DbContext 클래스를 정의할 때, category 엔티티의 Product 속성처럼 테이블을 나타내는 속성에 사용할 형식은 무엇인가
나의답변 - DB 클래스에서 테이블을 나타내는 속성으로는 해당 테이블의 엔티티를 정의한 클래스가 데이터 형이 되. 그런데 이건 1:1의 경우이고 1:N의 경우에는 ICollection<해당테이블을 정의한 엔티티 클래스> 가 되지.
(5점) DbContext 클래스에서 테이블을 나타내는 속성에는 DbSet 타입을 사용합니다. 여러분의 답변은 정확하며, ICollection는 관계를 나타내는 데 사용되는 것이 맞습니다.
Category 엔티티의 Products 속성처럼 일대다 관계를 나타내려면 어떤 형식의 속성을 사용해야 하는가
나의답변 - ICollection<> 이야.
(5점) 일대다 관계를 나타내는 데 ICollection를 사용하는 것이 맞습니다.
기본키를 위한 EF 규약은 무엇인가
나의답변 - ID라는 문자열을 포함하는 거야
(4점) 기본키를 위한 EF 규약에 대한 여러분의 답변은 부분적으로 맞습니다. EF에서 기본키를 자동으로 인식하려면 엔티티의 속성 이름을 'Id' 또는 클래스 이름 뒤에 'Id'를 붙여 사용합니다. 여러분의 답변은 이 규칙의 일부분만을 언급했습니다.
엔티티클래스에서 주석 특성은 언제 사용되는가?
나의답변 - 이게 DATA ANNOTATION을 말하는 건지 모르겠지만 주석특성은 엔터티의 해당 칼럼의 특성을 정하기 위해서 써. 예를 들어 VARCHAR(40)이라면 [stringlength(40)] 과 같이 해
(5점) 엔티티 클래스에서의 주석 특성(Data Annotations) 사용 설명은 정확합니다. 이는 엔티티의 속성에 대한 메타데이터를 제공하여 열 유형, 길이 제한, 필수 여부 등을 정의할 때 사용됩니다.
주석 특성보다 Fluent api를 사용해야 하는 이유는 무엇인가?
나의답변 - 코드로 제어하기 편해서?
(3점) Fluent API를 사용하는 주된 이유는 모델 구성을 보다 세밀하게 제어할 수 있으며, 코드로 직접 구성할 수 있어 복잡한 엔티티 매핑과 관계를 표현하기에 더 적합하기 때문입니다. 여러분의 답변은 개념을 단순화했지만, 좀 더 구체적인 이유를 제공할 수 있었을 것입니다.
Serializable의 트랜잭션 격리 수준은 무엇인가
나의답변 - 모르겠다..
(0점) Serializable의 트랜잭션 격리 수준에 대한 질문에 대한 정확한 답변은 제공되지 않았습니다. Serializable 격리 수준은 트랜잭션이 완전히 격리되어 실행되도록 보장하는 가장 엄격한 격리 수준입니다.
DbContext.SaveChanges()는 무엇을 반환하는가
나의답변 - 위의 코드로 인해서 영향을 받은 데이터 행 수를 반환해
(5점) DbContext.SaveChanges()가 반환하는 것은 영향 받은 행의 수입니다. 여러분의 답변이 정확합니다.
즉시 로딩과 지연 로딩의 차이점은 무엇인가?
나의답변 - 즉시 로딩은 코드가 시작한 이후에 바로 자원을 메모리에다가 올려. 그러니까 바로 쿼리를 실행해서 메모리에다가 올린다는거야 .지연로딩같은 경우에는 그 자원을 쓰는 시점에 위의 과정을 실행하지
(4점) 즉시 로딩과 지연 로딩의 차이점 설명은 기본적으로 맞지만, 더 명확하게 설명할 수 있었습니다. 즉시 로딩은 엔티티를 조회할 때 관련 엔티티를 함께 조회하는 것이고, 지연 로딩은 관련 엔티티가 실제로 접근될 때 조회하는 방식입니다.
다음 테이블에 매핑할 EF CORE 엔티티 클래스는 어떻게 정의해야 하는가
CREATE TABLE Employees(
EmpId INT IDENTITY,
FirstName NVARCHAR(40) NOT NULL,
Salary MONEY
)
나의 답변
public class Employees{
[Key]
public int EmpId{ get; set;}
[Required][StringLength(40)]
public string FirstName{get;set;}
[Column(type="MONEY")][Required]
public decimal Salary{Get;set;}
}
(4점) Employees 엔티티 클래스 정의에 대한 여러분의 답변은 거의 정확하지만, Column 어트리뷰트에서 type 매개변수는 존재하지 않습니다. EF Core에서는 Column 어트리뷰트를 통해 데이터베이스 열 이름을 지정할 수 있으며, 타입은 Fluent API를 통해 설정하는 것이 일반적입니다.
ㄴㄴㄴ 확인해봤는데 Column 어트리뷰트에서 type. 매개변수는 없지만 TypeName 매개변수는 있다.
엔티티 네비게이션 속성을 virtual로 선언했을 때 얻는 장점은 무엇인가?
나의답변 - EntityFrameworkCore.Proxies를 사용한 지연로딩이 가능해집니다.
(5점) 엔티티 네비게이션 속성을 virtual로 선언하는 장점에 대한 답변은 정확합니다. 이를 통해 프록시를 활용한 지연 로딩을 구현할 수 있습니다.