2011-08-16 4 views
7

현재 Entity Framework 4를 2011 년 6 월 CTP (enum 지원)와 함께 사용하고 있으며 지속 된 클래스에 구조체를 포함하는 데 어려움을 겪고 있습니다. 내가 (다른 사람의 사이에서)을 InclusionCriteria 구조체 필드가 ​​Patient 클래스가 :구조체의 필드를 포함하는 클래스와 동일한 테이블에 저장할 수 있습니까?

public class Patient 
{ 
    public InclusionCriteria inclusionCriteria 
    { 
     get; 
     set; 
    } 

    ... 
} 

구조체는 원시적 필드, 상당히 간단하다, 그것은 명백하게되었다

public struct InclusionCriteria 
{ 
    public bool withStemi 
    { 
     get; 
     set; 
    } 

    ... 
} 

시스템을 실행 한 후 그 구조체의 데이터가 저장되지 않았습니다. 생성 된 테이블을 볼 때 구조체가 (외래 키 또는 기타로) 존재하지 않습니다. 구조체의 필드를 Patient 테이블에 배치하고 싶습니다. 따라서 DbSet 기준을 만들지 않았습니다. 잠재적으로이 작업을 수행 할 수는 있지만 동일한 테이블에 모든 작업을 유지하려고합니다. 이것은 엔티티 프레임 워크에서 가능합니까?

답변

7

구조체는 지원되지 않습니다. 클래스를 사용하여 복합 유형으로 매핑해야합니다. 코드 첫 번째 접근 방식을 사용하는 경우 클래스를 만들고 데이터베이스를 다시 만들려고 할 수 있습니다. 운이 좋다면 자동으로 복합 유형으로 매핑됩니다. 그렇지 않으면 데이터 주석을 사용할 수 있습니다

[ComplexType] 
public class InclusionCriteria { ... } 

또는 유창 API :

modelBuilder.ComplexType<InclusionCriteria>(); 

복잡한 형태를 만들 수 EDMX이 this article에 따라 사용하고 this article이 그것을 사용하는 경우.

btw. CTP 2011은 실제 기능이 아닌 새로운 기능을 테스트하는 용도로만 사용됩니다. 그 내용은 다음 CTP에서 변경 될 수 있습니다.

+0

감사합니다. 외관상으로는, 나가 찾고 있던 키워드는 복잡한 유형이었다. 나는 그것이 결코'null'이 아니 었는지 확인하기 위해 strcut을 사용하고 있었지만, 나는 보통의 메소드를 대신 사용할 것입니다. – 101100

관련 문제