第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使實體類因更改而關閉

使實體類因更改而關閉

一只名叫tom的貓 2019-09-26 15:30:37
使實體類因更改而關閉我有一個數(shù)據(jù)庫關系,如下所示。域對象是基于LINQ to SQL ORM創(chuàng)建的。付款包括現(xiàn)金付款和禮券付款。假設總購買金額為550??梢园匆韵陆M成部分付款1 Gift Coupon Valued 3001 Gift Coupon Valued 200I Cash Currency Valued 50我正在使用ORM的“ InsertOnSubmit”功能插入新的付款記錄。以下代碼運行正常。但是,如果公司要使用信用卡引入新的付款方式,則需要更改“付款”域類。我如何仍使用ORM使付款類別對擴展開放,對變更封閉?注意:Payment類具有行為(例如GetTotalAmountCollected)。我正在嘗試使“支付”類滿足OCP。注意:優(yōu)惠券類型有特定的行為。如果優(yōu)惠券發(fā)行日期小于2000年1月1日,則不應將其用于總金額的計算(即,優(yōu)惠券值應為零)。另請參閱使用策略模式重構代碼。注意:我正在使用.Net 4.0參考:將ObjectContext.AddObject與實體框架一起使用時出現(xiàn)錯誤使用策略模式重構代碼比繼承更偏愛組成?代碼優(yōu)先與模型/數(shù)據(jù)庫優(yōu)先使用Unity的策略模式和依賴注入代表與OOP的C#策略設計模式如何在C#中使用策略模式?首先使用EF代碼進行繼承:第2部分–每個類型的表(TPT)http://weblogs.asp.net/manavi/archive/2010/12/28/inheritance-mapping-strategies-with-entity-framework-code-first -ctp5部分-2-表每類型tpt.aspxC#代碼:public class PaymentAppService{     public RepositoryLayer.ILijosPaymentRepository Repository { get; set; }     public void MakePayment()     {         DBML_Project.Payment paymentEntity = new DBML_Project.Payment();         paymentEntity.PaymentID = 1;         paymentEntity.PaymentType = "PurchaseP";         DBML_Project.CashPayment cashObj = new DBML_Project.CashPayment();         cashObj.CashPaymentID = 1;         cashObj.CurrencyNumber = 123;         cashObj.CurrencyValue = 100;         DBML_Project.GiftCouponPayment giftCouponObj = new DBML_Project.GiftCouponPayment();         giftCouponObj.GiftCouponPaymentID = 1;         giftCouponObj.CouponValue = 200;         giftCouponObj.CouponNumber = 124;         paymentEntity.CashPayments = new System.Data.Linq.EntitySet<DBML_Project.CashPayment>();         paymentEntity.CashPayments.Add(cashObj);         paymentEntity.GiftCouponPayments = new System.Data.Linq.EntitySet<DBML_Project.GiftCouponPayment>();         paymentEntity.GiftCouponPayments.Add(giftCouponObj);         Repository.InsertEntity(paymentEntity);         Repository.SubmitChanges();     }}
查看完整描述

3 回答

?
慕工程0101907

TA貢獻1887條經(jīng)驗 獲得超5個贊

也許一種替代方法是在ORM中也利用繼承。這樣,付款實體中就不會有N個集合,而是每種類型一個。您將在同一集合中擁有所有子類型。所有這些加起來將代表整個付款。

也許對名稱取些不同會更容易。例如,讓我們考慮Purchase的概念。購買應具有付款的集合。而付款可能是一個抽象類,從現(xiàn)金,優(yōu)惠券,信用卡式,全部繼承。

以這種方式建立模型為解決特定問題提供了很多可能性。您可以將所有付款視為相同,而不必理會不同的收款,而且可以通過多態(tài)和雙重調度進行大量控制。

這樣,如果出現(xiàn)新的付款類型,則您的模型將保持不變,您將只有一個新的子類型。

如今,大多數(shù)ORM支持不同的持久性方案進行繼承,這也將有助于保持數(shù)據(jù)結構的整潔。


查看完整回答
反對 回復 2019-09-26
  • 3 回答
  • 0 關注
  • 565 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號