POCOs, DTO и IDataErrorInfo - PullRequest
       45

POCOs, DTO и IDataErrorInfo

1 голос
/ 22 августа 2010

Я проснулся сегодня утром с проблемой!

Во всех моих компонентах у меня есть набор бизнес-правил, которые используются для проверки DTO, прежде чем любые изменения будут внесены в репозиторий.

Я пытался найти лучший способ вернуть ошибки валидации обратно в интерфейс, и я наткнулся на интерфейс IDataErrorInfo.Фантастика!

Однако реализация этого интерфейса преобразует мой DTO в POCO и сделает его более крупным объектом с точки зрения использования памяти.В настоящий момент все пользовательские элементы управления привязаны к текущим объектам DTO.

Повлияет ли преобразование моих DTO в POCO на производительность?Или есть лучший способ вернуть сообщения проверки в пользовательский интерфейс?

Ответы [ 2 ]

0 голосов
/ 22 августа 2010

Я пытался выяснить лучший способ вернуть ошибки валидации к интерфейсу, и я наткнулся на Интерфейс IDataErrorInfo. Fantastic!

Абсолютно. Почему вы не знаете, что вы делаете в первую очередь? IDataErrorInfo полностью документирована - это не то, с чем вам следует «столкнуться» (что звучит случайно).

Реализация этого интерфейса превратит мой DTO в POCO и сделать его более крупным объектом с точки зрения использование памяти. На данный момент все пользовательские элементы управления связаны с текущие объекты DTO.

У DTO нет абсолютно никакой информации о внутренних ошибках - никогда не должно быть внутренних ошибок. Смотрите, DTO - это «Объект передачи данных», а не «Бизнес-объект». DTO - это то, что бизнес-объект должен сгенерировать для отправки его в DataAccessLayer, и причина, по которой не должно быть проверки, заключается в том, что бизнес-объект гарантирует, что ТОЛЬКО ВАЛИДНЫЕ ОБЪЕКТЫ СОЗДАЮТ DTO.

Btw.,

превратит мой DTO в POCO

У меня для вас есть еще одно неожиданное открытие - ваш DTO уже является POCO. POCO - это «Обычный старый объект CLR», и я полагаю, что ваши DTO установлены как классы .NET, так что - угадайте, что, удивительно, они уже являются POCO.

Что вы имеете в виду (опять что-то, чтобы открыть), так это то, что оно превратит ваши DTO в BO.

Или есть лучший способ получить валидация сообщений обратно в интерфейс?

Нет, нет. Наилучший способ отправки сообщений до пользовательского интерфейса - через интерфейсы, определенные пользовательским интерфейсом, и IDataErrorInfo таков.

Ваша проблема в том, что у вас возникла путаница в отношении:

  • Как программировать многоуровневую архитектуру и создавать стандартный уровень доступа к данным
  • Ничего не знаю об используемых вами терминах (посмотрите, в чем состоит ваша проблема, зная, что такое DTO и что такое POCO).
  • Таким образом перепутайте свои обязанности.

См. Ответы по POCO против DTO , чтобы объяснить, что вы на самом деле перепутали.

Назад к чертежной доске. Как ваш ведущий разработчик / архитектор, вы познакомитесь с многоуровневой архитектурой и прочитаете документацию .NET.

DTO не должен заниматься проблемами DataTransfer.

0 голосов
/ 22 августа 2010

MVVM . т. е. ваши DTO обернуты в модели представлений, которые привязаны к вашему представлению.

...