2

我一直在 MVC5 网站上工作以管理保险单,并被我认为是设计问题所困扰。我首先有一个代码,TPH 实体情况,带有以下称为策略的抽象类:

public abstract class Policy 
{

    public int PolicyID { get; set; }

    [DataType(DataType.Date)]
    [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
    public DateTime Inception { get; set; }

    [DataType(DataType.Date)]
    [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
        public DateTime Expiration { get; set; }
}

和两个具体的类如下:

public class UmbrellaPolicy : Policy
{

        [Display(Name = "Umbrella:")]
        public bool hasUmb { get; set; }
        public virtual List<Umb> UmbCoverages { get; set; }
}

public class PackagePolicy : Policy
{
       [Display(Name = "General Liability:")]
       public bool hasGen { get; set; }
       public virtual List<Gen> GenCoverages { get; set; }

       [Display(Name = "Umbrella:")]
       public bool hasUmb { get; set; }
       public virtual List<Umb> UmbCoverages { get; set; }
}

并且,最后一个类与上述两个具体类具有一对多关系:

public class Umb
{
        public int UmbID { get; set; }

        [DataType(DataType.Date)]
        [DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}", ApplyFormatInEditMode = true)]
        [Display(Name = "Coverage Effective")]
        public DateTime DateAdded { get; set; }

        [Display(Name = "Each Occurrence Limit")]
        public decimal OccurrenceLimit { get; set; }

        [Display(Name = "Each Occurrence Retention")]
        public decimal OccurrenceRetention { get; set; }

        [Display(Name = "Aggregate Limit")]
        public decimal AggregateLimit { get; set; }

        public virtual Policy Policy { get; set; }

}

业务要求是,如果客户想要保护伞保险,如果他们只想要保护伞保险,他们要么购买保护伞保单,要么如果他们想要保护伞保险和责任保险(比如那些希望您捆绑房主和汽车保单的广告),则购买一揽子保单。描述客户拥有多少保险的类别(Umb 类别)是相同的,无论客户购买的是独立保单还是套餐中的伞式保险。

当我尝试创建一个新的 Umb 并将策略(无论是保护伞还是包)添加到虚拟 Policy 属性,然后尝试从具体策略类的列表中查看 Umb 对象列表时,没有显示。

查看数据库后,当我进行数据库迁移时,似乎有三个关键列:UmbrellaPolicy_PolicyID、PackagePolicy_PolicyID 和 Policy_PolicyID。它成功地将正确的策略 ID 添加到 Policy_PolicyID 列,但我猜实体框架会根据我正在使用的具体类(即在强类型视图中)查看 Umbrella 或 Package 列。我觉得我遗漏了一些明显的东西,或者我走上了一条摇摇欲坠的实现道路。有人可以指出我的任何建议或读物都会很棒。谢谢!

4

0 回答 0