2010-12-13 4 views
1

이제 새 프로젝트에 EF CTP 5를 구현하기 시작했습니다. 이 경우 모호한 데이터베이스 명명 규칙으로 인해 모든 데이터베이스 필드의 이름이 POCO 속성과 다르게 지정됩니다. 내가 바로이지도하는 가장 좋은 방법을 생각하는 건가요이가 매우 빠르고 매우 큰 끝날 것입니다이Entity Framework 코드 첫 번째 CTP5 매핑

modelBuilder.Entity<Sale>().Property(s => s.ID).HasColumnName("sale_id"); 
    modelBuilder.Entity<Sale>().Property(s => s.ProductName).HasColumnName("product_name"); 
    modelBuilder.Entity<Sale>().Property(s => s.ProductPrice).HasColumnName("product_price"); 
    modelBuilder.Entity<Sale>().Property(s => s.SaleDate).HasColumnName("sale_date"); 

과 같은 코드 OnModelCreating을 무시하고하는 것입니다, 그것은이 작업을 수행하는 가장 좋은 방법은 정말?

답변

1

덕분에 나는 데이터 계층에서 별도의 엔티티를 유지하기 위해 원하는대로 내 원래의 접근 방식을 고수 결국 답

을 위해.

그러나 좀 더 관리하기 쉽게 컨텍스트를 부분 클래스로 만들고 MapUsers 또는 MapRoles와 같은 개인 메서드로 파일을 만든 다음 OnModelCreating에서 방금 이러한 메서드를 호출했습니다.

+0

흥미로운 솔루션 - 부분 및 이벤트 사용. 이것은 당신이 poco 당 1 부분 클래스를 가질 수 있다는 것을 의미합니다, 그렇죠? (최악의 경우 시나리오). –

+0

맞습니다. 어쩌면 그것 모두를 위해 아닙니다 그러나 나를 위해 그것은 부호를 매우 다루기 쉽게한다. – Gavin

3

새로운 CTP5 속성을 사용하는 것이 좋습니다. 이 경우에는 데이터 주석을 사용하는 것이 유창한 API보다 더 나은 선택 인 것 같습니다. 귀하의 판매 클래스는 아래의 코드처럼 보일 것입니다 :

public class Sale 
{ 
    [Column(Name="sale_id")] 
    public int ID { get; set; } 

    [Column(Name="product_name")] 
    public string ProductName { get; set; } 

    [Column(Name="product_price")] 
    public string ProductPrice { get; set; } 

    [Column(Name="sale_date")] 
    public DateTime SaleDate { get; set; } 
} 
+0

sales_id가 두 번 있습니다 –

+0

고마워요! –

+1

비즈니스 엔티티를 데이터 계층과 분리하여 유지하는 경우 최상의 접근 방식이 아닌 것 같습니다. – KallDrexx

관련 문제