Сценарий. Объект из модели данных передается в веб-службу WCF с различной информацией, сохраняется в базе данных, а затем возвращается обратно с объектом, полностью заполненным дополнительной информацией.
public class Request
{
public virtual Guid RequestID { get; set; }
public virtual string RequestType { get; set; }
public virtual System.DateTime CreatedDate { get; set; }
//More properties here populated from DB
}
[OperationContract]
Request CreateRequest(Request input);
В этом примере RequestID и CreatedDate заполняются только тогда, когда запись вставлена в базу данных, и, следовательно, не должны быть видны во время первоначального запроса.Однако они должны быть видны при возврате объекта.
Текущий подход, который мы используем, заключается в создании двух классов (RequestInput, RequestOutput) в нашем проекте реализации веб-службы, которые наследуются от сущности.Затем мы добавим атрибуты [DataMember] для различных требуемых свойств, а атрибуты [IgnoreDataMember] - для тех, которые следует игнорировать.
Это правильный подход?