2014-11-25 2 views
0

부모의 다른 유형에서 사용하는 자식 객체 테이블에 대한 외래 키 이름을 지정하려면 어떻게해야 내 데이터베이스에서EF 코드 첫째 - 당신은 다음과 같이 내가 일부 개체를 가지고

abstract public class Field 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public int Ordinal { get; set; } 
} 

[Table("DropDownField")] 
public class DropDownField : Field 
{ 
    public virtual List<FieldOption> Options { get; set; } 
} 

[Table("RadioButtonField")] 
public class RadioButtonField : Field 
{ 
    public virtual List<FieldOption> Options { get; set; } 
} 

public class FieldOption 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string Value { get; set; } 
} 

, 그것은 생성 끝 코드 우선을 사용하는 FieldOptions 테이블 그러나, 그것은 다음과 같은 열이 생성 :

  • 이드
  • 이름
  • 은 내가보고 싶은 것은 한이에 FIELD_ID입니다

RadioButtonField_Id

  • 을 DropDownField_Id 테이블의 ID는 여러 유형의 필드에서 고유해야하므로

    이 방법이 있습니까? 나는 약간의 검색을했지만, 대답을 찾는 데 사용할 정확한 검색어를 모르겠다.

  • +0

    귀하의 경우에는 기본 클래스에 목록을 넣으십시오. – tschmit007

    +0

    그럴 수 있지만 옵션을 포함 할 필요가없는 다른 필드 유형 (예 : TextBoxField)이 있습니다. 나는 그 예들에 그들을 포함시키지 않았다. – amrinea

    답변

    0

    imho, 당신이 원하는 것은 관계형 데이터베이스의 관점에서, 2 개의 테이블 DropDownField 및 RadioButtonField에 대한 외래 키인 열 (Option.FieldId)입니다.

    옵션을 삽입 할 때마다 FieldId는 기존 DropDownField와 기존 RadioButtonField를 참조해야합니다.

    적어도 이상합니다.

    나는 이것이 달성 될 수 있거나 달성되어야한다고 생각하지 않는다.

    +0

    맞아, 이상하게 들릴지도 모르지만 Option.FieldId는 잠재적으로 Field 테이블의 Id를 참조 할 수있다. 현재 데이터베이스 구조에는 Field, DropDownField 및 RadioButtonField라는 세 개의 테이블이 만들어집니다. DropDownField 또는 RadioButtonField의 모든 Id에는 해당하는 Id가 Field 테이블에 있습니다. 다른 테이블은 모든 고유 값을 저장합니다. – amrinea

    +0

    솔직히, 나는이 문제에 대해 꽤 오랜 시간 동안 "우아한"해결책을 찾고, 나는 심지어 그것을 내 마음 속의 대기열에 보관한다. 그러나 DBA 관점, 특히 무결성 제약 사항에 직면했을 때 "차단"질문으로 간주하지 않습니다. – tschmit007

    관련 문제