2010-03-11 16 views
11

Jak zaimplementować obiekty (encje) klonujące w NHibernate? Każda klasa obiektu ma takie właściwości:Jak klonować obiekty w NHibernate?

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

Ponadto klasa encji dziedziczy obiekt podstawowy. Próbowałem zaimplementować rozwiązanie przy użyciu serializacji XML, ale nie można serializować interfejsów.

Dziękuję za odpowiedzi!

Odpowiedz

14

AutoMapper http://automapper.codeplex.com/ rozwiązuje mój problem. Na przykład, możliwe sklonować obiektu biznesowego w następnym sposób:

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

Będziesz chciał wykluczyć właściwości Id za pomocą 'Mapper.CreateMap (). ForMember (d => d.Id, o => o.Ignore());' i ręcznie skopiować właściwości IList przy użyciu czegoś takiego jak : 'newtransact.Clubs = this.Clubs.Select (item => item.Clone()). ToList();' - see: http://stackoverflow.com/questions/3396808/ –

+0

Dzięki za to. Uratowało mi to trochę bólów głowy. – Nick

0

Nie znam Twojej domeny ani wymagań, ani nie rozumiem twoich potrzeb, ale wdrożenie ICloneable interface i napisanie kodu do sklonowania twojego obiektu powinno zadziałać.

Pamiętaj, że podczas klonowania musisz wpisać rzut.

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

Proszę, powiedz mi, gdzie mam to źle tak, że mogę się nauczyć! =) Czy coś jest źle zrozumiałe w pytaniu? Dzięki! –