ASP.NET | MVC 4 | C# | WCF
プレゼンテーション層 (MVC) からデータ層 (エンティティ) への仲介として WCF Web サービスを使用しています。MVC から Web サービスへのデータ モデル データの移動を簡素化するために、WCF でプロキシ クラスを使用することを考えました。残念ながら、これによりモデル内のプロパティの MVC 装飾が失われました。MVC ビューのモデルで使用するため、および WCF サービスへのトランスポート メソッドとして使用するための集中化されたクラスを作成する良い方法はありますか?
オプションとして自動マッピングが思い浮かびましたが、それには 2 つの同一のクラスが必要になると思います。MVC 側に 1 つ、WCF 側に 1 つ。クラスでプロパティが変更された場合、両側で変更を加える必要があります。
他の提案をいただければ幸いです。ありがとう!
編集:: 例
これは、レコードのテーブルを含むページのモデルです
public class ReconcileModel
{
#region PROPERTIES
public List<ReconcileItem> ReconcileItems { get; set;}
#endregion
#region CONSTRUCTORS
public ReconcileModel()
{
ReconcileItems = new List<ReconcileItem>();
}
#endregion
}
そのテーブルの各レコードを表すクラスを次に示します。
public class ReconcileItem
{
#region PROPERTIES
public int ID { get; set; }
public string Description { get; set; }
public string LastLocation { get; set; }
public string LastRead { get; set; }
public string IntendenLocation { get; set; }
public string PickId { get; set; }
public string OEM { get; set; }
public string LotNumber { get; set; }
public string SerialNumber { get; set; }
public DateTime ExpirationDate { get; set; }
public string ReconcileReason { get; set; }
public string RemoveReason { get; set; }
#endregion
#region CONSTRUCTORS
public ReconcileItem()
{
}
#endregion
}
上記のクラスの WCF コントラクト表現は次のようになります。
[DataContract]
public class ReconcileItem
{
[DataMemeber]
public int ID { get; set; }
[DataMember]
public string Description { get; set; }
[DataMember]
public string LastLocation { get; set; }
[DataMember]
public string LastRead { get; set; }
[DataMember]
public string IntendenLocation { get; set; }
[DataMemeber]
public string PickId { get; set; }
[DataMember]
public string OEM { get; set; }
[DataMember]
public string LotNumber { get; set; }
[DataMember]
public string SerialNumber { get; set; }
[DataMember]
public DateTime ExpirationDate { get; set; }
[DataMember]
public string ReconcileReason { get; set; }
[DataMember]
public string RemoveReason { get; set; }
}
このレコードを更新する場合、クラスは WCF サービスに送信され、適切なエンティティ フレームワーク クラスにマップされ、データベースに保存されます。転送を簡素化するために、このクラスを WCF プロジェクトに配置し、MVC プロジェクトで参照するだけでよいと考えました。その後、WCF と MVC の間でクラスをやり取りできます。また、WCF でクラスを更新すると、MVC に反映されます。これが中央集権化の意味です。