POCO,DTO和IDataErrorInfo

时间:2010-08-22 07:21:29

标签: wpf validation poco dto idataerrorinfo

我今天早上醒来遇到问题!

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

我一直在努力找出将验证错误带回UI的最佳方法,我遇到了IDataErrorInfo界面。奇妙!

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

将我的DTO转变为POCO会对性能产生影响吗?或者有更好的方法将验证消息返回给用户界面吗?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:-5)

  

我一直想弄清楚   恢复验证错误的最佳方法   到UI,我遇到了   IDataErrorInfo接口。奇妙!

绝对。你怎么不知道你在做什么? IDataErrorInfo是完全记录的 - 不是你应该“遇到”的东西(听起来不小心)。

  

此接口的实现   将我的DTO变成POCO和   使它成为一个更大的对象   内存使用情况。目前,全部   用户控件绑定到   当前的DTO对象。

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

顺便说一下,

  

会将我的DTO转换为POCO

我还有另一个惊喜发现 - 你的DTO已经是POCO了。 POCO是“普通的旧CLR对象”,我猜你的DTO是作为.NET类建立的,所以 - 猜猜看,它们已经是POCO了。

你的意思(再次发现的东西)是它会把你的DTO变成BO的。

  

还是有更好的方法   验证消息回到UI?

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

你的问题是你对此感到困惑:

  • 如何编程多层架构并构建标准数据访问层
  • 对您使用的术语一无所知(请参阅您的问题,了解DTO究竟是什么,以及POCO是什么)。
  • 因此混淆了你的责任。

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

返回绘图板。作为您的首席开发人员/架构师,您将了解多层体系结构并阅读.NET文档。

DTO应该处理DataTransfer问题。