ASP.NET | MVC 4 | C# | WCF
我使用 WCF Web 服务作为从表示层 (MVC) 到数据层 (Entity) 的中介。为了简化将数据模型数据从 MVC 移动到 Web 服务,我想我会在 WCF 中使用代理类,这样就会有一个集中的类。不幸的是,这导致模型内属性上的 MVC 装饰丢失。有没有一种好方法可以创建一个集中的类以与 MVC 视图的模型一起使用,也可以作为 WCF 服务的传输方法?
自动映射是一种选择,但我相信这需要两个相同的类。一个在 MVC 端,一个在 WCF 端。如果类中的属性发生更改,这仍然需要我在双方都进行更改。
任何其他建议将不胜感激。谢谢!
编辑:: 示例
这是包含记录表的页面的模型
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 中。这就是中心化的意思。