Czy .NET 4 ISet <> HashSet <> wymienić NHibernate Iesi.Collections ISet, HashSet? Używam Proxy Castle i NHibernate 3.0.Czy .NET 4 ISet <> HashSet <> zastępuje NHibernate Iesi.Collections ISet, HashSet?
Odpowiedz
Nie, nie w tej odpowiedzi.
Silnik NHibernate używa interfejsu Iesi.Collections.ISet
w wewnętrznych klasach zbierania, które są używane jako opakowania wokół kolekcji w klasach, które NHibernate utrzymuje. Nie ma bezpośredniej konwersji na System.Collections.Generic.ISet<T>
.
Aktualizacja: NHibernate 4 używa teraz HashSet<T>
z BCL wewnętrznie i HashedSet<T>
została usunięta z zależnością Iesi.Collections
. Obecnie dostępne jest podejście do korzystania z System.Collections.Generic.ISet<T>
.
Tak. Istnieją dwa podejścia:
- zadeklarować swój kolekcję jako
ICollection<T>
i zainicjować go jakoHashSet<T>
. Zobacz this article. Modeluję kolekcje jako prywatne członków i ujawniamIEnumerable<T>
, więc to działa dobrze, ale wadą jest to, że nie można ujawnićISet<T>
. - Użyj pakietu Set4Net4 NuGet autorstwa Jose Romaniello. Zobacz this article i source code.
dzięki za link. –
Podoba mi się drugie podejście. – kaptan
Hm, kiedy próbowałem, NHib z jakiegoś powodu odtwarzał moją kolekcję jako tablicę, więc nie mogłem dodawać/usuwać przedmiotów. Po prostu spojrzał na ICollection i zdecydował, że może umieścić to, co lubi ... – JustAMartin
Tak, z Nhibernate 4, używając System.Collections.Generic.ISet<>
jest teraz the way to go.
- 1. Wywołanie Distinct <>() na HashSet <T>
- 2. C# cała zawartość HashSet <string>
- 3. Konwertuj zestaw HashSet <T> na tablicę w .NET
- 4. Skąd HashSet <T> przechodzi w VS2012?
- 5. Dlaczego program HashSet <T> nie implementuje IReadOnlyCollection <T>?
- 6. Korzyści z konwertowania listy <String> na HashSet <String> Java
- 7. HashSet <T> w systemie Windows Phone 7
- 8. C# HashSet <T> wydajność wyszukiwania (w porównaniu do ObservableCollection <T>)?
- 9. Zawiera z HashSet <Integer> w Pythonie
- 10. Konwertuj zestaw <Map.Entry <K, V>> na HashMap <K, V>
- 11. Określ względne uzupełnienie dwóch zestawów IEnumerable <T> w .NET
- 12. Konwertuj zestaw <Object> do kolekcji <String>
- 13. <%# %> vs <%= %>
- 14. ASP.NET <%= %> vs <%: %>
- 15. Sortowanie Hashset .Net 3.5
- 16. SortedList <>, SortedDictionary <> i Dictionary <>
- 17. convert <vector><string> TO <vector><int> C++, Win32
- 18. IEnumerable <> to IList <>
- 19. Szyny ERB <%- ... -%> vs. <% ... %>
- 20. Wyświetlanie <<..>> = na wyjściu
- 21. <?> vs <T>
- 22. Zastępuje się: < and > z <i> wystarczy, aby zapobiec wstrzyknięciu XSS?
- 23. # <UserSession: {: unauthorized_record => "<protected>"}>
- 24. Dlaczego TreeSet <T> jest typem wewnętrznym w .NET?
- 25. Func <TObject, bool> lub Predicate <TObject>?
- 26. Wewnętrzne System.Linq.Set <T> vs System.Collections.Generic.HashSet publicznej <T>
- 27. C# 4: Dynamiczna i Nullable <>
- 28. Jaka jest różnica między zapytaniem NHibernate <> a QueryOver <>?
- 29. Lista <int> do IEnumerable <IComparable>
- 30. NET Reflection: Wykrywanie IEnumerable <T>
http://stackoverflow.com/questions/6272636/nhibernate-unable-to-cast-persistentgenericset-to-iset –