2010-03-11 18 views
11

¿Cómo implementar la clonación de objetos (entidades) en NHibernate? Cada clase de entidad tiene tales propiedades:Cómo clonar objetos en NHibernate?

public virtual IList<Club> Clubs { get; set; } 

Además, la clase de entidad hereda BaseObject. Intenté implementar la solución mediante la serialización XML, pero no es posible serializar las interfaces.

¡Gracias por tus respuestas!

Respuesta

14

AutoMapper http://automapper.codeplex.com/ resuelve mi problema. Por ejemplo, es posible clonar un objeto de negocio en la siguiente forma:

Mapper.CreateMap<Transaction, Transaction>(); 
var newtransact = new Transaction(); 
Mapper.Map(transact, newtransact); 
+3

Usted querrá excluir las propiedades Id usando 'Mapper.CreateMap (). ForMember (d => d.Id, o => o.Ignore());' y manualmente copiará las propiedades de IList usando algo como : 'newtransact.Clubs = this.Clubs.Select (item => item.Clone()). ToList();' - see: http://stackoverflow.com/questions/3396808/ –

+0

Gracias por esto. Me salvó algunos dolores de cabeza. – Nick

0

No conozco su dominio o sus requisitos, ni si estoy entendiendo mal su necesidad, pero implementar el código ICloneable interface y escribir el código para clonar su objeto debería funcionar.

Recuerde que tendrá que escribir el reparto al clonar.

ClonedObject clonedObjectinstance = (ClonedObject)initialEntityInstance.Clone(); 
+0

Por favor, dime dónde lo tengo mal, así que yo puedo aprender! =) ¿Hay algo que malinterpreté en la pregunta? ¡Gracias! –