Có thể .NET 4 ISet <> HashSet <> thay thế NHibernate Iesi.Collections ISet, HashSet? Tôi đang sử dụng proxy Castle và NHibernate 3.0.Có thể .NET 4 ISet <> HashSet <> thay thế NHibernate Iesi.Collections ISet, HashSet?
Trả lời
Không, không phải trả lời này.
Công cụ NHibernate sử dụng giao diện Iesi.Collections.ISet
trên các lớp thu thập nội bộ được sử dụng làm trình bao bọc xung quanh các bộ sưu tập trong các lớp của bạn mà NHibernate vẫn tồn tại. Không có chuyển đổi trực tiếp thành System.Collections.Generic.ISet<T>
.
Cập nhật: NHibernate 4 bây giờ sử dụng HashSet<T>
từ BCL trong nội bộ, và HashedSet<T>
đã bị xóa khỏi các Iesi.Collections
phụ thuộc. Phương pháp sử dụng System.Collections.Generic.ISet<T>
hiện khả dụng.
Có. Có hai phương pháp:
- Khai báo bộ sưu tập của bạn như
ICollection<T>
và khởi tạo nó nhưHashSet<T>
. Xem this article. Tôi lập mô hình các bộ sưu tập là thành viên riêng lẻ và hiển thịIEnumerable<T>
để điều này hoạt động tốt, nhưng nhược điểm là bạn không thể hiển thịISet<T>
. - Sử dụng gói Set4Net4 NuGet của Jose Romaniello. Xem this article và source code.
cảm ơn liên kết. –
Tôi thích cách tiếp cận thứ hai. – kaptan
Hm, khi tôi thử nó, NHib vì lý do nào đó đã tái tạo bộ sưu tập của tôi thành một mảng, vì vậy tôi không thể thêm/xóa các mục. Nó chỉ nhìn vào ICollection và quyết định rằng nó có thể đặt bất cứ điều gì nó thích ... – JustAMartin
Có, với Nhibernate 4, sử dụng System.Collections.Generic.ISet<>
hiện là the way to go.
http://stackoverflow.com/questions/6272636/nhibernate-unable-to-cast-persistentgenericset-to-iset –