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有很多代码,我宁愿不重复那些工作。