2

私は保険契約を管理するために MVC5 Web サイトに取り組んできましたが、設計上の問題と思われるものに行き詰まっています。私は、ポリシーと呼ばれる次の抽象クラスを持つ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; }
}

そして、次の 2 つの具象クラス:

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

そして最後に、上記の両方の具体的なクラスと 1 対多の関係を持つクラス:

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 を作成してポリシー (アンブレラまたはパッケージ) を仮想ポリシー プロパティに追加し、具体的なポリシー クラスのリストから Umb オブジェクトのリストを表示しようとすると、何も表示されません。

データベースを調べたところ、データベースの移行を行ったときに、UmbrellaPolicy_PolicyID、PackagePolicy_PolicyID、および Policy_PolicyID の 3 つの主要な列があることがわかりました。正しいポリシー ID が Policy_PolicyID 列に正常に追加されますが、エンティティ フレームワークは、使用している具象クラス (厳密に型指定されたビュー) に応じて、Umbrella または Package 列を参照していると思います。明らかな何かが欠けているか、不安定な実装パスをたどったように感じます。誰かが私に指摘できる提案や読み物は素晴らしいでしょう. ありがとう!

4

0 に答える 0