2010-03-11 35 views
11

Làm thế nào để thực hiện các đối tượng (thực thể) nhân bản trong NHibernate? Mỗi lớp thực thể có các thuộc tính như vậy:Làm thế nào để sao chép các đối tượng trong NHibernate?

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

Ngoài ra, lớp thực thể kế thừa BaseObject. Tôi đã cố gắng triển khai giải pháp bằng cách sử dụng tuần tự hóa XML, nhưng không thể tuần tự hóa các giao diện.

Cảm ơn câu trả lời của bạn!

Trả lời

14

AutoMapper http://automapper.codeplex.com/ giải quyết được sự cố của tôi. Ví dụ: có thể sao chép đối tượng doanh nghiệp theo cách tiếp theo:

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

Bạn sẽ muốn loại trừ các thuộc tính Id bằng cách sử dụng 'Mapper.CreateMap (). ForMember (d => d.Id, o => o.Ignore());' và tự sao chép các thuộc tính IList bằng cách sử dụng một cái gì đó như : 'newtransact.Clubs = this.Clubs.Select (item => item.Clone()). ToList();' - xem: http://stackoverflow.com/questions/3396808/ –

+0

Cảm ơn vì điều này. Nó đã cứu tôi một số cơn đau đầu. – Nick

0

Tôi không biết tên miền hoặc yêu cầu của bạn, hay tôi có hiểu nhầm nhu cầu của bạn hay không, nhưng việc triển khai ICloneable interface và viết mã để sao chép đối tượng của bạn sẽ hoạt động.

Hãy nhớ rằng bạn sẽ phải nhập truyền khi nhân bản.

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

Vui lòng cho tôi biết tôi đã hiểu sai ở đâu để bản thân tôi có thể học! =) Có điều gì mà tôi hiểu nhầm trong câu hỏi không? Cảm ơn! –

Các vấn đề liên quan