【问题标题】:POCOs, DTOs and IDataErrorInfoPOCO、DTO 和 IDataErrorInfo
【发布时间】:2011-04-02 05:14:14
【问题描述】:

我今天早上醒来发现一个问题!

在我的所有组件中,我都有一组业务规则,用于在将任何更改提交到存储库之前验证 DTO。

我一直在尝试找出将验证错误返回到 UI 的最佳方法,但我遇到了 IDataErrorInfo 接口。太棒了!

但是,此接口的实现会将我的 DTO 转换为 POCO,并使其在内存使用方面成为更大的对象。目前,所有用户控件都绑定到当前 DTO 对象。

将我的 DTO 转换为 POCO 会对性能产生影响吗?或者有没有更好的方法将验证消息返回到 UI?

【问题讨论】:

    标签: wpf validation poco dto idataerrorinfo


    【解决方案1】:

    MVVM。即,您的 DTO 包装在视图模型中,这些模型绑定到您的视图。

    【讨论】:

    • DTO 必须实现 IDataErrorInfo 如果你想直接绑定到 DTO 并使用 IDataErrorInfo 没有别的办法。不是真正的答案。
    【解决方案2】:

    我一直在想办法 恢复验证错误的最佳方法 到用户界面,我遇到了 IDataErrorInfo 接口。太棒了!

    当然。你怎么一开始不知道自己在做什么? IDataErrorInfo 有完整的文档记录——不是你应该“遇到”的东西(听起来很意外)。

    这个接口的实现 会将我的 DTO 转变为 POCO 并且 使它成为一个更大的对象 内存使用情况。此刻,所有 用户控件绑定到 当前的 DTO 对象。

    DTO 完全不知道内部错误 - 它不应该永远有内部错误。请看,DTO 是“数据传输对象”,而不是“业务对象”。 DTO 是业务对象应生成以将其发送到 DataAccessLayer,不应该进行验证的原因是业务对象确保只有有效的对象创建 DTO。

    顺便说一句,

    会将我的 DTO 转变为 POCO

    我还有另一个惊喜发现 - 你的 DTO 已经是 POCO。 POCO 是“Plain Old CLR Object”,我猜你的 DTO 是作为 .NET 类建立的,所以 - 你猜怎么着,惊讶,它们已经是 POCO。

    您的意思是(再次发现)它会将您的 DTO 转换为 BO。

    或者有没有更好的方法 验证消息返回 UI?

    不,没有。将消息发送到 UI 的最佳方式是通过 UI 定义的接口,IDataErrorInfo 就是这样。

    您的问题是您对以下内容感到非常困惑:

    • 如何编写多层架构并构建标准数据访问层
    • 对您使用的术语一无所知(了解 DTO 实际是什么以及 POCO 是什么,看看您的问题)。
    • 因此混淆了您的职责。

    请参阅POCO vs DTO 的答案,了解您实际混淆的内容。

    回到绘图板。作为您的首席开发人员/架构师,向您介绍多层架构并阅读 .NET 文档。

    DTO 不应处理 DataTransfer 问题。

    【讨论】:

    • 所有有效积分。根据您提出的观点,我已将此答案标记为正确。下次尽量不要这么磨人。
    猜你喜欢
    • 2010-11-15
    • 2012-04-10
    • 2010-10-28
    • 2010-09-30
    • 1970-01-01
    • 2012-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多