2017-09-21 2 views
0

J'essaie de rester à Poço, mais je suis dans une impasse:colonne FK aux tables mulitple POCO

Public class Alpha() 
{ 
     public int ID { get; set; } 
     [ForeignKey("")] 
     public int BetaId { get; set; } 

     public virtual BetaA BetaA{ get; set; } 
     public virtual BetaB BetaB{ get; set; } 
} 

Public class BetaA() 
{ 
     public int ID { get; set; } 
} 

Public class BetaB() 
{ 
     public int ID { get; set; } 
} 

Comment puis-je obtenir Alpha.BetaId être à la fois ForeignKey à BetaA.ID et BetaB .ID dans POCO?

Si quelqu'un d'autre trébuchent autour de cette

Solution I utilisé

Public class Alpha() 
{ 
     public int ID { get; set; } 
     public int BetaId { get; set; } 

     [ForeignKey("BetaId")]  
     public virtual BetaA BetaA{ get; set; } 
     [ForeignKey("BetaId")] 
     public virtual BetaB BetaB{ get; set; } 
} 

Public class BetaA() 
{ 
     public int ID { get; set; } 
} 

Public class BetaB() 
{ 
     public int ID { get; set; } 
} 

Répondre

0

ont BetaA et BetaB partager une clé primaire référence alors BetaB via BetaA

Vous pouvez également décorer les propriétés de nav avec l'attribut clé étrangère et spécifiez la propriété int comme FK pour les deux, bien que je n'ai pas testé ce scénario moi-même (je suis sur un appareil mobile). Essayez-le et faites le moi savoir!

+0

Merci beaucoup! J'ai décoré la propriété nav. –

+0

Mon souci avec cette approche est ce qui arrive quand vous assignez BetaA et BetaB avec différentes valeurs d'identification - l'une des deux valeurs attendues ne sauvera pas – Moho

+0

Hmm .. Je vois votre point - mais en raison du processus ETL, ces valeurs ne devraient pas être autorisé à être inséré. –