2012-06-20 2 views
1

EF 4.3을 사용 중이며 오라클 데이터베이스를 사용하고 있습니다. EF가 Oracle 데이터베이스 용 SQL을 생성하는 방법과 EF 4.3이 사용자 정의 규칙을 추가 할 수 없기 때문에 모든 속성의 각 속성에 대해 수동으로 열 이름을 지정해야합니다.복잡한 유형을 사용하는 속성에서 매핑 할 때 어떻게 열 이름을 모두 대문자로 만들 수 있습니까?

[Column("MYPROPERTY")] 
public string MyProperty { get; set; } 

그럼 복잡한 유형을 사용하는 속성은 어떻게해야합니까?

public class Minute { 
    public int Value { get; set; } 
} 

다음과 같은 DbContext :

public class MyDbContext : DbContext { 
    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.ComplexType<Minutes>().Property(x => x.Value); 
    } 
} 

그리고 내 엔티티 : 나는 다음과 같은 복합 형식이 생성 된 SQL에서

[Table("MYENTITY")] 
public class MyEntity { 
    [Column("MYPROPERTY")] 
    public string MyProperty { get; set; } 
    [Column("MYMINUTES")] //this does nothing 
    public Minutes MyMinutes { get; set; } 
} 

을의 MyMinutes 속성은 비에 매핑 -existent "Extent1"."MyMinutes_Value" ... 나는 "Extent1"."MYMINUTES"을 원했습니다.

책상에서 내 머리를 쾅 쾅 대고 여기에서 무엇을 할 수 있습니까?

+0

이상한 점 - Oracle에서 EF를 사용하고 있으므로 수동으로 지정하지 않아도됩니다. –

+0

EF 4.3 코드 우선? –

답변

0

답변은 매우 간단하지만 문서화가 잘되어 있지 않습니다. 내가 아는 한, 속성으로 처리 할 수 ​​없습니다. DataContext를의 OnModelCreating 방법에 줄을 추가합니다 :

public class MyDbContext : DbContext { 
    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.ComplexType<Minutes>().Property(x => x.Value); 
     modelBuilder.Entity<MyEntity>().Property(x => x.MyMinutes.Value).HasColumnName("MYMINUTES"); 
    } 
} 

그래서, 방법의 첫 번째 행은 일반적으로 복잡한 유형을 설정합니다. 두 번째 줄은 EF에게 MyEntity 클래스의 속성을 매핑하는 방법을 알려줍니다. 비올라!

관련 문제