Теперь вы достигли 74-й очереди WCF Hell, в которой я обречен на вечную путаницу DTO. Я хорошо привык к рассудительно инкапсулированный объект/механизм свойств устанавливающих, как это, где значение некоторые по умолчанию устанавливается в конструкторе, а сброс этого значения «пачкает» объект:Используя DTO, каков правильный способ обновить свойство BLL в WCF?
public class SomeObject
{
private int someValue;
public int SomeValue
{
get { return someValue; }
set
{
someValue = value;
// now SomeObject.IsDirty = true;
}
}
public SomeObject(int someDefaultValue)
{
someValue = someDefaultValue;
}
}
DTOS появляются решительно против к этой простой конструкции я предполагаю (но не знаю) через декораторы DataContract
и DataMember
. Когда я пошагово, я вижу некоторые вызовы в стеке, я не могу ворваться, но это примерно результат:
[DataContract]
public class SomeObjectDTO
{
private int someValue;
[DataMember]
public int SomeValue
{
get { return someValue; }
set
{
// apparently the set is getting called by the constructor?
someValue = value;
}
}
public SomeObjectDTO(int someDefaultValue)
{
//apparently no one cares what I want to do here? next line won't fire
someValue = someDefaultValue;
}
}
я могу увидеть значение потока параметра конструктора в set
, но дон «Не знаю, как это сделать, и я не вижу, как отделить значение, построенное по умолчанию для сопоставления по умолчанию, из EDIT, отредактированного пользователем-edit-property-value-and-it-must-be-return-to-the-service.
Я уверен, что это злоупотребление DTOS, но я не могу видеть правильный путь WCF, чтобы справиться с этим очень основными, общими случаями:
- Как вы разделяете экземпляр свойства значение от редактирования ?
- Если у вас есть объект/DTO с, скажем, 50 свойствами, откуда вы знаете, когда пользователь меняет 49 из них, и как вы отправляете эти изменения обратно на корабль материального объекта BLL за один выстрел?
Являются ли DTO, используемые в вашей OperationContracts? –
Да, это целая цель их создания. – downwitch