实体框架 - ASP MVC模型 - 关系

时间:2012-05-15 20:08:32

标签: asp.net-mvc-3

我的应用中有一些模型如下:

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

所以它的主旨是。我有一个询问,每个询问有一种询问类型(销售,一般,技术等..)所以这是一对一的关系。然后,每个查询都可以附加多个DeliveryType,因此它是一对多的关系。

我的问题是,我是否正确使用上面的模型进行了设置?我错过了什么吗?我是否在错误的地方设置虚拟/未正确设置?我是否需要EnquiryID在我的DeliveryType模型中?

1 个答案:

答案 0 :(得分: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; }
}