ASP.NET | MVC 4 | C# | WCFASP.NET MVC - Classi WCF per modelli
Sto utilizzando i servizi Web WCF come intermediario dal livello di presentazione (MVC) al livello dati (Entità). Per semplificare lo spostamento dei dati del modello di dati da MVC al servizio Web, ho pensato di utilizzare le classi proxy in WCF, in modo da creare una classe centralizzata. Sfortunatamente, questo ha causato la perdita delle decorazioni MVC sulle proprietà all'interno del modello. Esiste un buon modo per creare una classe centralizzata da utilizzare con un modello per la vista MVC e anche come metodo di trasporto per il servizio WCF?
L'automapping mi è venuto in mente come opzione, ma credo che richiederebbe due classi identiche. Uno sul lato MVC e uno sul lato WCF. Il che mi richiederebbe comunque di effettuare un cambiamento da entrambe le parti se una proprietà è cambiata in una classe.
Qualsiasi altro suggerimento sarebbe apprezzato. Grazie!
EDIT :: Esempio
Ecco modello per una pagina che contiene una tabella di record
public class ReconcileModel
{
#region PROPERTIES
public List<ReconcileItem> ReconcileItems { get; set;}
#endregion
#region CONSTRUCTORS
public ReconcileModel()
{
ReconcileItems = new List<ReconcileItem>();
}
#endregion
}
Ecco una classe per rappresentare ogni record nella tabella.
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
}
La rappresentazione contratto WCF della classe di cui sopra sarebbe
[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; }
}
Se voglio aggiornare questo record, la classe viene inviato al servizio WCF, mappato appropriate classi Entity Framework, e salvato al database. Per semplificare il trasferimento ho pensato di inserire questa classe nel progetto WCF e di farne riferimento nel progetto MVC. Quindi potrei passare la classe in avanti tra WCF e MVC. Inoltre, se avessi aggiornato la classe in WCF, questa si sarebbe riflessa in MVC. Questo è ciò che si intende per centralizzato.
La tua domanda è un po 'vaga. Puoi presentarci un codice, ad esempio mostrando cosa intendi per "classe centralizzata"? – Steven
@Steven vedere le modifiche e fammi sapere se questo chiarisce le cose. Grazie! – Will