【问题标题】:In Breeze for .NET, how do you save DTOs alongside Entity Framework entities?在 Breeze for .NET 中,如何将 DTO 与 Entity Framework 实体一起保存?
【发布时间】:2017-04-21 22:29:55
【问题描述】:

在官方documentation中,提到了DTO可以作为微风实体:

它不必是 ORM 类。它可能是一个 DTO 类,您稍后将通过 BeforeSaveEntities 的实现将其映射到业务模型中的一个类。

在 Ward Bell 的 comment 中,他建议采用以下策略将 DTO 与 EF 实体一起保存:

  1. 从 EntityInfos 中删除 DTO
  2. 从 Db 中检索相应的业务模型实体(如果这是插入,则创建这样的实体)
  3. 从 DTO 更新此副本
  4. 将此实体添加到 EntityInfos(更新时不要忘记 OriginalValues 属性)
  5. 冲洗并重复所有此类 DTO
  6. 放手... EF 会保存它
  7. 拦截“保存后”并将更新/插入的业务实体重新映射到 SaveResult 中的 DTO 表单,以便您将 DTO(而不是“真实”实体)发送回客户端。

此建议的问题在于第 4 步。EntityInfo.Entity 属性定义为internal。如何使用正确的 EF 实体创建 EntityInfo?

此建议的一种替代方法是覆盖 SaveChangeCore 方法并在该方法中处理 DTO 到 EF 实体的映射。这样做的缺点是 EFContextProvider.SaveChangesCore 有很多代码,我不想重复这些工作。

【问题讨论】:

    标签: breeze


    【解决方案1】:

    我找到了 ContextProvider.CreateEntityInfo()。它有一个接受实体并设置 EntityInfo.Entity 属性的重载。

    【讨论】:

      猜你喜欢
      • 2011-04-05
      • 1970-01-01
      • 2013-12-25
      • 2019-05-01
      • 1970-01-01
      • 2021-08-19
      • 2010-10-07
      • 1970-01-01
      • 2021-03-14
      相关资源
      最近更新 更多