2012-05-15 6 views
0

j'ai quelques modèles dans mon application comme ceci:Entity Framework - ASP MVC modèles - Les relations

public class Enquiry 
{ 
    [Key] 
    [Required] 
    public int EnquiryID { get; set; } 

    [Required] 
    [Display(Name = "Enquiry Type:")] 
    public virtual int EnquiryTypeID { get; set; } 
    public virtual EnquiryType EnquiryType { get; set; } 

    public virtual ICollection<DeliveryType> DeliveryTypes { get; set; } 

} 

public class EnquiryType 
{ 
    [Key] 
    public int EnquiryTypeID { get; set; } 

    [Display(Name = "Enquiry Type:")] 
    [MaxLength(100)] 
    public string EnquiryTypeName { get; set; } 
} 

public class DeliveryType 
{ 
    [Key] 
    public int DeliveryTypeID { get; set; } 
    public int EnquiryID { get; set; } 
    public string DeliveryName{ get; set; } 
} 

Ainsi, le jist de c'est. J'ai une enquête, chaque enquête a un type d'enquête (ventes, général, technique, etc.) donc c'est une relation un-à-un. Chaque Enquête peut alors avoir plusieurs DeliveryTypes attachés, c'est donc une relation un-à-plusieurs.

Ma question est, ai-je configuré ceci correctement avec mes modèles ci-dessus? Est-ce que je manque quelque chose? Est-ce que j'ai du virtuel au mauvais endroit/pas configuré correctement? Ai-je besoin de EnquiryID pour être dans mon modèle DeliveryType?

+0

Avez-vous des problèmes avec elle? – Romias

Répondre

1

Vous n'avez pas besoin de EnquiryID sur le modèle DeliveryType. Mais, le EnquiryTypeID sur l'enquête ne devrait pas être virtuel. Je voudrais le configurer comme ceci:

public class Enquiry 
{ 
    [Key] 
    [Required] 
    public int EnquiryID { get; set; } 

    [Required] 
    [Display(Name = "Enquiry Type:")] 
    public int EnquiryTypeID { get; set; } 

    public virtual EnquiryType EnquiryType { get; set; } 
    public virtual ICollection<DeliveryType> DeliveryTypes { get; set; } 

} 

public class EnquiryType 
{ 
    [Key] 
    public int EnquiryTypeID { get; set; } 

    [Display(Name = "Enquiry Type:")] 
    [MaxLength(100)] 
    public string EnquiryTypeName { get; set; } 
} 

public class DeliveryType 
{ 
    [Key] 
    public int DeliveryTypeID { get; set; } 
    public string DeliveryName{ get; set; } 
} 
+0

Merci pour la réponse. Par curiosité, pourquoi devrais-je supprimer 'EnquiryID' de' DeliveryType'. Comment la relation serait-elle alors configurée si 'DeliveryType' n'a aucune idée de quelle requête elle est attachée aussi? – CallumVass

+0

Je suppose que je suis confus sur la façon dont vous utilisez DeliveryTypes. Un seul DeliveryType peut-il être associé à de nombreuses demandes, ou chaque DeliveryType n'appartient-il qu'à une seule demande? Si ce dernier est vrai, alors vous avez raison - vous devrez ajouter EnquiryId aux propriétés de DeliveryType. – MattSavage

+0

Ouais ce dernier est vrai, désolé pour la confusion! Merci d'avoir répondu! – CallumVass

Questions connexes