Estoy trabajando en un proyecto asp.net mvc core 2.0 y entityframework.
Estoy trabajando con el concepto de viewmodel.
Esto significa que no paso instancias de entidades directamente a mi vista, paso una instancia de modelo de vista que solo contiene lo que la vista necesita.
en un caso, necesito pasar todos los campos de la entidad más otra información.
Lo que he hecho es derivar mi clase ViewModel de mi clase de entidad. y agrego los campos extra:
public MyViewModel: Person
{
// I will automaticly have Person fields in MyViewModel
public bool IsSelected {get;set;}
public String otherinformation {get;set;}
...
}
Estoy harto de asignar cada campo de mi modelo de vista desde mi instancia de entidad.
myviewmodelinstance.field1 = myentity.field1;
myviewmodelinstance.field2 = myentity.field2;
myviewmodelinstance.field3 = myentity.field3;
myviewmodelinstance.IsSelected = false;
...
Y necesito hacer la operación inversa en la devolución de datos.
¿Hay una manera de "copiar" o "clonar" todos los campos, como esto:
myentity.CopyTo(myviewmodelinstance);
myviewmodelinstance.IsSelected = false;
Gracias
Podrías usar el AutoMapper
para lograrlo. Es la forma ideal de realizarlo. Otra opción es que puede serializar y deserilar el objeto como json.
var myviewmodelinstance = JsonConvert.DeserializeObject<MyViewModel>(JsonConvert.SerializeObject(myentity));
Nota: El código que proporcioné requiere Json.Net