2014-02-05 5 views
1

나는 매우 큰 조직에서 할 작은 프로젝트에 EF 6을 사용하려고합니다. POCO 비즈니스 객체를 갖는 것이 중요하지만 EF로 POCO를 수행하는 방법에서 찾을 수있는 모든 옵션은 전체 데이터베이스 구조를 POCO 객체에 매핑하려고하는 자동 생성 도구에 의존하는 것 같습니다. 우리는 많은 데이터베이스, 수백 개의 테이블 및 수백 개의 뷰를 보유하고 있으며 당분간 이러한 테이블 중 일부만 사용하려고합니다 (그리고 어떤 프로젝트는 작은 하위 집합 만 사용하기를 원할 것입니다).Entity Framework 6을 사용하는 수제 POCO?

또한 필자는 필연적으로 많은 외래 속성이나이 테이블이 저장하는 일부 일반 속성을 매핑하지 않으려합니다. 그래서 난 정말 손으로 이러한 POCO 개체를 만들고 그들을 EF에 연결하고 그것을 매핑하자 - 나는 여전히 EDMX 파일을 사용할 수 있고 싶다면 내 ObjectContext, 가능하면 만들 필요가 싶습니다. .

마치 죽은 것처럼 보이지만 실제로 어떤 리소스도 찾을 수 없습니다. 누군가가 올바른 방향으로 나를 가리킬 수 있다면 정말 도움이 될 것입니다.

답변

6

Entity Framework에는 기존 테이블에도 매핑 할 수있는 코드 첫 번째 요소가 있습니다. 이렇게하면 POCO를 사용하여 테이블을 나타낼 수 있습니다. 데이터베이스 매핑 논리에서 POCO를 분리 할 수있는 매핑 클래스를 만들 수 있습니다.

POCO와 테이블 열의 이름이 다른지 지정할 수 있습니다. 그러나 둘 사이에 차이가 없다면 생략 할 수 있습니다.

using ProjectName.Models; 
using System; 
using System.Collections.Generic; 
using System.Data.Entity.ModelConfiguration; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

public class ProfileMapping : EntityTypeConfiguration<Profile> 
{ 
    public ProfileMapping() 
    { 
     // Primary Key 
     this.HasKey(t => t.Id); 

     // Map POCO name to Column Name 
     this.Property(t => t.Firstname) 
      .HasColumnName("First_Name") 
      .HasMaxLength("256"); 


     // Table Mapping 
     this.ToTable("Profiles"); 

     // Relationships 
     this.HasRequired(t => t.Roles); 
    } 
} 

DbContext를 사용하여 이러한 매핑을 등록 할 수 있습니다.

기존 데이터베이스에서 DbContext를 생성하려면 Entity Framework Power Tools를 사용하는 것이 좋습니다.

http://visualstudiogallery.msdn.microsoft.com/72a60b14-1581-4b9b-89f2-846072eff19d

+0

Entity Framework 6.1은 "데이터베이스에서 코드 우선"템플릿 (https://msdn.microsoft.com/en-us/library/jj200620.aspx)을 통해 기존 데이터베이스에서 코드 첫 번째 코드를 생성 할 수있는 기능을 제공합니다. 또 다른 옵션은 EntityFramework Reverse POCO Code First Generator를 사용하는 것입니다. https://github.com/sjh37/EntityFramework-Reverse-POCO-Code-First-Generator –

0

체크 아웃 http://www.asp.net/mvc/tutorials/mvc-5/database-first-development/setting-up-database

각 데이터베이스에 대한 edmx를 만들고 당신이 가져올 오브젝트를 선택할 수 있습니다.

기존 데이터베이스가있는 경우 먼저 데이터베이스를 확인하십시오.

+0

EDMX를 사용하면 기존 POCO를 사용할 수 없습니다. –

+0

실제로는 그렇지 않지만 원하는 개체를 선택할 수 있습니다. 먼저 코드에서 어떤 이점이 있습니까? – Batavia

+0

OP는 자신의 핸드 메이드 POCO를 사용할 필요성을 표명했습니다. 또한 코드 우선/코드 매핑 접근 방식을 사용하여 원하는 것을 선택할 수 있습니다. 특히 EF 전동 공구와 함께. –

관련 문제