2017-12-13 13 views
0

저는 엔티티 프레임 워크를 처음 접했고 엔티티 프레임 워크 문서를 읽었으며 Conceptual ModelLogical Model에 대해 이야기했습니다.Entity Framework : 데이터베이스에있는 동일한 테이블의 모델에 여러 개의 엔터티를 갖는 방법은 무엇입니까?

내 모델의 엔티티가 데이터베이스 테이블과 일치해야한다고 생각했습니다. 나는 대답이 아니오라고 생각한다. 하지만 아래 시나리오를 구현하는 방법을 알고 싶습니다.

테이블 업데이트를위한 엔티티가 있고이 테이블에서 읽는 엔티티가 필요합니다. 예 : 엔티티가 EditStudent이고 다른 필드가 ViewStudent이고 다른 필드가 데이터베이스에서 가져 오려고합니다. Student 내 데이터베이스에 있습니다.

그리고 EditStudent 필드를 업데이트하면 학생 테이블의 해당 필드에 변경 사항을 제출할 수 있습니다.

어떻게 가능합니까? 게다가, 내 시나리오는 Entity Framework의 일반적인 관례입니까, 아니면 데이터베이스 테이블마다 하나의 엔티티가있는 것이 일반적입니까?

+1

가능하지만 당신은 모든 것을 잘못보고 있다고 생각합니다. Student 모델을 만들어야하고 코드의 비즈니스 로직 측면에서 EditStudent 및 ViewStudent 버전에서 사용할 수 있습니다. –

+2

ViewModel을 사용하여 먼저 엔티티 클래스를 생성 한 다음 CRUD ViewModel을 생성하여 사용할 수 있습니다. –

+2

* 내 모델의 엔티티가 데이터베이스 테이블과 일치해야한다고 생각했습니다. 내 대답은 '아니오'라고 생각합니다. * 반대입니다. 작은 예외 (테이블 분할, TPH/TPT/TPC 계층, 암시 적 접합 테이블과의 다 대다 관계)를 사용하여 EF 엔티티 모델은 기본적으로 저장소 모델, 즉 데이터베이스 테이블과 일치합니다. –

답변

1

일반적으로 데이터베이스를 처리 할 때 몇 가지 수준의 추상화가 있습니다.

Entity Framework를 사용할 때 매우 자주 Repository Pattern입니다. 당신이 google 그것을하면 당신은 수많은 설명을 찾을 수 있습니다.

당신은 두 개의 레이어를 찾을 수

  • 데이터베이스 층 (확실하지 레이어의 이름은 모든 곳에서 사용하는 경우). 이는 데이터베이스의 테이블과 테이블 간의 관계를 나타냅니다. Entity Framework에서이 DbContext는 DbContext이며 DbSets입니다. 모든 DbSet은 열 및 열에 제약 조건을 보유한 테이블입니다. DbContext에 저장된 모델은 테이블 간의 관계를 나타냅니다. 일대 다, 다 대다, 키가 외래 키로 사용됩니다.
  • 리포지토리 계층은 수행 할 작업을 나타냅니다. 데이터베이스 계층. 그것은 당신이 사용하고있는 데이터베이스 방법을 숨 깁니다. 저장소 계층의 사용자는이 계층이 엔티티 프레임 워크를 사용하는지 또는 다른 방법을 사용하여 데이터베이스에 액세스하는지 여부를 알 수 없습니다. 실제로 그것은 데이터베이스 일 필요는 없습니다. 저장소 계층의 사용자는 데이터가 Excel 스프레드 시트 파일이 될 수 있습니다.

이 부분을 따르면 DbContext가 데이터베이스를 나타내야합니다. 이 데이터베이스를 사용하는 방법은 DbContext에 없습니다.

편집 가능한 학생의 개념과 vieuwable 학생는 일반적으로 저장소 계층에서 것들입니다. 둘 다 DbContext의 Student 테이블에 액세스하지만, 한 유형은 public get 기능이있는 인터페이스 만 리턴하며, 다른 유형은 Student의 데이터를 변경하는 기능을 갖습니다. 둘 다 동일한 DbContext에서 동일한 테이블을 사용합니다.