2012-02-10 22 views

Trả lời

10

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.

18

Có. Có hai phương pháp:

  1. 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>.
  2. Sử dụng gói Set4Net4 NuGet của Jose Romaniello. Xem this articlesource code.
+0

cảm ơn liên kết. –

+0

Tôi thích cách tiếp cận thứ hai. – kaptan

+0

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

2

Có, với Nhibernate 4, sử dụng System.Collections.Generic.ISet<> hiện là the way to go.

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