2013-08-29 1 views
2

저는 EntityTypeConfiguration에서 상속 한지도 클래스와 함께 Entity Framework Code First를 사용하고 있습니다. 엔티티 구성에 대한 코드 첫 번째 유창 API 사용을 캡슐화하기 위해이 작업을 수행합니다.EntityTypeConfiguration <T> 인스턴스의 구성원 구성을 검사하려면 어떻게합니까?

이러한 클래스의 구성 설정을 검토하여 통합 테스트에 일부 적용 할 수 있기를 바랍니다. AutoFixture를 사용하여 엔티티를 빠르게 만들고 궁극적으로 엔티티 유형 구성 클래스의 내부에서 구성을 사용하는 일부 사용자 정의를 만드는 방법을 찾고 싶습니다. 나는이 의사 코드 같은 것을 어떻게

public class Widget { public string Name { get; set; } } 
public class WidgetMap : EntityTypeConfiguration<Widget> { 
    this.Property(w => w.Name).HasMaxLength(10); 
} 

:

하지만 먼저, 내가 그들을 꺼내하는 방법을 알아낼 필요가 ... 여기

는 유스 케이스 예제

public Widget GetWidgetHonoringStringLengthConstraints(WidgetMap map) { 
    var w = new Widget(); 
    int maxLength = map.GetProperty(p => p.Name).GetMaxLength(); //MAGIC 
    string name = new Guid().SubString(0, maxLength); 
    w.Name = name; 
    return w; 
} 

답변

0

Entity Framework Codeplex Discussions의 Arthur Vickers로부터 회신을 받았습니다.

본질적으로 잘못된 트리를 짖고 있다고 나에게 말했습니다. 의도적으로 정상적인 공용 표면에서 구성 클래스를 검사하기를 원하지 않았기 때문입니다. 아이디어는 API를 오염시키는 것이고 문자열의 최대 길이와 같은 것을 찾으려고 할 때 종종 이야기를 들려 줄 수 있지만 전체 이야기가 아닙니다 (궁극적 인 최대 길이 제한은 기본 설정을 포함하여 여러 규칙에서 나왔을 수 있습니다). 이는 항상 당신에게 대답을 줄지는 못합니다 너는 정말로 후 있습니다.

그는 다음과 같이 액세스 할 수있는 MetadataWorkspace을 통해 구축 된 후 모델에서 메타 데이터를 얻는 것이 좋습니다 : 내가 추구하지 않은

((IObjectContextAdapter)myDbContext).ObjectContext.MetadataWorkspace 

아직 구현,하지만 난으로이 표시됩니다 다른 사람이 다른 답변을 제출할 때까지 대답하십시오 (예를 들어, 다른 옵션을 사용하기 전에 예를 들어).

+1

가능하지만 지저분합니다. http://stackoverflow.com/a/9580743/26226 – jrummell

관련 문제