2017-05-05 2 views
0

친애하는 엔티티 전문가 및 다른 사람,엔티티 프레임 워크 데이터베이스 모델

I가 다음 엔터티,

기본 클래스의 개별 :

public abstract class Individual 
    { 
     [Key] 
     public int IndividualID { get; set; } 
     ... other properties 
    } 

요기 :

[Table("Yogis")] 
    public class Yogi : Individual 
    { 
     public string Firstname { get; set; } 
     public string Lastname { get; set; } 
     public DateTime Birthdate { get; set; } 
    } 

고객 :

[Table("Customers")] 
public class Customer : Individual 
{ 
    public string Name { get; set; } 

    [ForeignKey("VATID")] // tried with and without 
    public virtual VAT VAT { get; set; } 
} 

VAT :

public class VAT 
{ 
    [Key] 
    public int VATID { get; set; }  

    [Required] 
    public virtual Customer VATHolder { get; set; } 
    ... other properties 
} 

DbContext :

public DbSet<Individual> Individuals { get; set; } 
    public DbSet<VAT> VATS { get; set; } 

그래서 위 VATID 시작하는 2 인이 테이블 VAT를 만들고있는 일을해야한다 대신, 나는 이것이 왜 일어나는 지 이해하지 못한다. 이것은 1이 아닌가? 또한 고객 & VAT를 참조하는 테이블에는 아무런 참조가 없습니다. VATID & 고객 ID가있는 별도의 테이블 VAT_Customer를 만들려면 어떻게해야합니까?

이 내가 만들고 기업 고객을 삽입하는 방법입니다

 VAT vat = new VAT("123456789"); 
     DataBaseHandler.InsertIndividual(new Customer("Customer name", vat,...)); 

삽입 기능 : 나는 여러 가지 방법 (EXAMPLES HERE)를 시도

public static void InsertIndividual(Individual individual) 
    { 
     using (MyDbContext ctx = new MyDbContext()) 
     {    
       ctx.Individuals.Add(individual);  
       ctx.SaveChanges();          
     } 
    } 

하지만 내가 가진의 TPT 방식을 선호 어떤 개체 또는 개체 간의 관계에 대한 별도의 견해. 내가 뭘 잘못하고 어떻게하면 원하는 결과를 얻을 수 있을까? 내가 무엇인가를 분명히 할 수 있는지 알려줘. 사전에 도움이나 제안을 해주셔서 감사합니다!

친절에 감사드립니다! 1 개 관계 : 다음 외래 키에

enter code here 
[ForeignKey("VAT")] 
public virtual int VATId { get; set; } 
public virtual VAT VAT { get; set; } 

이름은 클래스와 동일합니다 당신 싶어 1이있는 경우

답변

1

귀하의 외래 키 배치는 다음과 같이 보일 것입니다. 이것은 당신이 고객으로부터 액세스 할 수 있습니다 ,, 또한

+0

은 부가가치세 클래스 (고객)가 필요하지 않습니다 도움이 될 수 있습니다

희망 직접 –

+0

고객이 1Vat 이상이있는 경우 ,, 고객 클래스에이 추가 : 공개 가상 목록 VATS {get; 세트; } –

+0

고객은 VAT 번호가 1 일 뿐이므로 VAT 클래스에서 고객을 삭제 : ** - 2 대신 VAT 1에서 ID를 작성합니다. (기쁜 소식!) - 고객 테이블에 열 이름을 추가합니다. VAT_VATID (대단히!) [ForeignKey ("VAT")] public virtual int VATID {get; 세트; } public virtual VAT VAT {get; 세트; } 이것은 내가 지금까지 본 최상의 결과 인 Customer 테이블에 VATID 열을 제공합니다.VATID와 CUSTOMERID가있는 CUSTOMER_VAT와 같이 테이블에 seperatly 매핑 할 수있는 방법이 있습니까? –

관련 문제