2013-07-28 5 views
1

첫 번째 사항 먼저; 나는 내가 생각할 수있는 모든 용어를 사용하여 대답을 찾았습니다. 더 나은 방법으로 질문한다면 사과드립니다. 그 내가 할 수있는 어떤 특성이 있는가하나의 엔티티에 대해 서로 다른 여러 엔티티간에 단방향 관계를 만듭니다.

public class SomeEntity 
{ 
    [???] 
    public string MetaDataId { get; set; } 
} 

public class CompletelyDifferentEntity 
{ 
    [???] 
    public string MetaDataId { get; set; } 
} 

:

public class MetaData 
{ 
    public int Id { get; set; } 
    public string SomeProperty { get; set; } 
} 

을 그리고 이것은 별개의 실체에 의해 참조 :

내가 엔티티가 아닌 특정 메타 데이터의 어떤 종류를 보유하고 엔티티를 말해봐 바꾸다 ??? 그러면 코드가 첫 번째 방식으로 작동합니다. 관계를 EF에 알리기 위해 각 객체에 MetaData 속성을 추가해야합니까? 나는 Required, ForeignKey, InverseProperty, Association attibutes (그리고 내가 잊어 버린 다른 것들)을 행운으로 시도했다.

유창한 API로 되돌리려면 메타 데이터 엔티티에 설정할 수 있습니까? 아니면 각 엔티티에 별도로 지정해야합니까?

NB : 실제로 메타 데이터 속성을 검색 할 필요가 없다면 대답이 달라 집니까? 즉, ID는 그룹화에만 사용됩니까? 당신이 즉, 두 개의 관련 단체, 중 적어도 하나의 탐색 속성을 필요로하는 모델에 외래 키 관계를 매핑하기 위해

답변

0

...

public class MetaData 
{ 
    public int Id { get; set; } 
    public string SomeProperty { get; set; } 

    public ICollection<SomeEntity> SomeEntities { get; set; } 
    public ICollection<CompletelyDifferentEntity> 
     CompletelyDifferentEntities { get; set; } 
} 

... 나 ...

EF는 MetaData 탐색 속성에 대한 외래 키 속성으로 MetaDataId을 인식하기 때문에 그 속성 이름 데이터 주석
public class SomeEntity 
{ 
    //... 

    public int MetaDataId { get; set; } 
    public MetaData MetaData { get; set; } 
} 

public class CompletelyDifferentEntity 
{ 
    //... 

    public int MetaDataId { get; set; } 
    public MetaData MetaData { get; set; } 
} 

은 필요하지 않습니다. MetaDataId에는 null이 허용되지 않는 유형이 있으므로 관계가 필요합니다 (선택 사항 아님).

+0

답장을 보내 주셔서 감사합니다. 나는이 엔티티 (질문에 언급 된)에 MetaData 속성을 추가하여 작동한다는 것을 알고 있지만 이것을 필요로하지 않는 방법이 있는지 확인하고있었습니다. 그것은 부끄러운 것처럼 보이는 많은 실재물에 결코 해결되지 않은 재산을 추가하는 것을 의미 할 것입니다. – JRoughan

+0

@JRoughan : 데이터베이스에 외래 키 제약 조건 만 있으면 SQL 스크립트를 사용자 지정 컨텍스트 초기화 프로그램에 추가하거나 코드 기반 마이그레이션에 추가 할 수 있습니다. – Slauma

관련 문제