シナリオ:データモデルのエンティティは、さまざまな情報を含むWCF Webサービスに渡され、データベースに保存され、追加情報が完全に格納されたオブジェクトとともに戻されます。この例では入出力に応じてWCF WebサービスのDataMemberプロパティを変更しますか?
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には、レコードがデータベースに挿入された場合にのみ移入され、したがって、最初の要求時に表示されてはなりません。しかし、オブジェクトが返されたときにそれらを表示する必要があります。
現行のアプローチでは、エンティティを継承するWebサービス実装プロジェクトに2つのクラス(RequestInput、RequestOutput)を作成します。 次に、必要なさまざまなプロパティに[DataMember]属性を追加し、無視する必要があるプロパティに対して[IgnoreDataMember]属性を追加します。
これは正しい方法ですか?
デカップリングについて議論しましたが、WebサービスのRequestオブジェクトからモデルのRequestオブジェクトへの追加のマッピングによって、コードの重複が発生しているようです。 –