1
在官方documentation,它提到的DTO可以作爲微風實體:在Breeze for .NET中,如何將DTO與實體框架實體一起保存?
它不必是一個ORM類。它可能是一個DTO類,您稍後將通過實現BeforeSaveEntities將其映射到您的業務模型中的類。
在comment由Ward貝爾,他提出了節能的DTO一起EF實體以下策略:
- 從EntityInfos
- 得到對應從數據庫業務模型實體刪除DTO(或創建這樣的實體,如果這是一個插入)
- 從DTO更新此副本
- 將此實體添加到EntityInfos(不要rget的更新的OriginalValues屬性)
- 沖洗和重複所有這樣的DTO
- 順其自然吧...和EF將其保存
- 攔截「後保存」並重新映射更新/插入業務實體成其DTO形式保存在SaveResult中,以便將DTO(而不是「真實」實體)發送回客戶端。
這項建議的問題是與步驟4中EntityInfo.Entity屬性被定義爲internal
。你如何用合適的EF實體創建一個EntityInfo?
這個建議的一個替代方法是覆蓋SaveChangeCore方法並處理DTO到EF實體的映射。這個缺點是EFContextProvider.SaveChangesCore有很多代碼,我寧願不重複那些工作。