2012-05-15 190 views
0

我有一些型號在我的應用程序,像這樣:實體框架 - ASP MVC模型 - 關係

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; } 
} 

所以它的JIST是。我有一個查詢,每個查詢有一個查詢類型(銷售,一般,技術等..),所以這是一個一對一的關係。然後每個查詢可以有多個附加的交付類型,因此它是一對多的關係。

我的問題是,我是否正確設置了上面的模型?我錯過了什麼嗎?我是否有虛擬位置錯誤/設置不正確?我需要EnquiryID在我的DeliveryType模型中嗎?

+0

你有什麼問題嗎? – Romias

回答

1

您不需要DeliveryType模型上的EnquiryID。但是,查詢中的EnquiryTypeID不應該是虛擬的。我會這樣設置:

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

感謝您的回覆。出於好奇,爲什麼我會從'DeliveryType'中刪除'EnquiryID'。那麼如果'DeliveryType'不知道連接了哪個查詢,那麼這個關係將如何建立呢? – CallumVass

+0

我想我很困惑你如何使用DeliveryTypes。一個DeliveryType可以與多個查詢相關聯,還是每個DeliveryType只能屬於一個查詢?如果後者是真的,那麼你是正確的 - 你需要將EnquiryId添加到DeliveryType的屬性中。 – MattSavage

+0

是的,後者是真的,抱歉的混亂!感謝你的回答! – CallumVass