Отображение частично заполненного DTO на объект домена - PullRequest
2 голосов
/ 01 сентября 2010

Я использую DTO между бизнес-уровнем и уровнем представления, и в службе есть некоторый код отображения, который преобразует объект домена DTO <->. В настоящее время я позволяю PL частично заполнить DTO и отправить его в службу обновления, которая обновляет только измененные свойства в связанном DO.

Как обычно работают с ненулевыми типами (значениями) в частично заполненных DTO? Для обнуляемых типов я просто проверяю, является ли значение DTO нулевым, и если нет, устанавливаю соответствующее значение в DO. Но ненулевые значения всегда будут содержать значение, которое может быть или не быть установлено PL.

Я мог бы:

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

Ни один из них не кажется идеальным: есть ли опция, которую я пропускаю? Или я подхожу к этой проблеме с неправильной точки зрения?

Если это актуально, я использую C # 4, WCF и ASP.NET MVC

Ответы [ 2 ]

1 голос
/ 01 сентября 2010

Один из способов - передать список свойств, измененных службе обновлений. Это может быть так же просто, как иметь целое число, где каждый бит указывает на какое-либо свойство ИЛИ массив индексов или имен свойств и т. Д. Вы также можете самостоятельно отслеживать свое DTO в том смысле, что каждый DTO будет поддерживать те свойства, которые были изменены.

Я обычно не предпочитаю такие частичные обновления - если они разрешены, тогда IMO, имеет смысл создать составной DTO (разделить свойства на группы свойств, принадлежащих дочерним объектам), где клиент имеет возможность обновляться на уровне группы (т.е. все свойства в группе должны быть заполнены). Если элемент управления для обновления необходим на каждом уровне свойств, тогда имеет смысл использовать PropertyBag (словарь пары имя / индекс - значение) типа DTO.

1 голос
/ 01 сентября 2010

Не могли бы вы дать больше информации о ненулевых типах значений, которые вы упомянули?Вам известны типы Nullable , которые можно использовать в вашем DTO?

...