佩德羅,
搜索NHibernate的代碼,我可以找到關於IPersistentCollection的GetValue方法(@ event.Collection)以下文檔:
/// <summary>
/// Return the user-visible collection (or array) instance
/// </summary>
/// <returns>
/// By default, the NHibernate wrapper is an acceptable collection for
/// the end user code to work with because it is interface compatible.
/// An NHibernate PersistentList is an IList, an NHibernate PersistentMap is an IDictionary
/// and those are the types user code is expecting.
/// </returns>
object GetValue();
就這樣,我們就可以得出結論,你可以將你的集合轉換爲IEnumerable,事情會正常工作。
我已經建立了一個小樣本映射一個袋子,事情就這樣在這裏:
public void OnPostUpdateCollection(PostCollectionUpdateEvent @event)
{
foreach (var item in (IEnumerable)@event.Collection.GetValue())
{
// DO WTVR U NEED
}
}
希望這有助於!
菲利佩
偉大的作品!唯一要注意的是投給IList。使用映射爲Set而不是Bag的集合,接口是ICollection,所以我們應該使用IEnumerable。謝謝! – Pedro 2010-08-12 14:22:31
好點。將我的答案更改爲IEnumerable。 – jfneis 2010-08-12 15:17:46