2016-03-23 37 views
0
私はこのラインにVisual Studio 2013

型または名前空間名「PersistentBagは」名前空間に存在しない「NHibernate.Collection」

でNuGetを使用して、4.0にNHibernateは2.2からWindowsのスマートクライアントソリューションをアップグレードしてい

sb.Append ("=" + ((NHibernate.Collection.PersistentBag) state[i]).Count.ToString() + " items"); 

私はこのエラーを取得:(入力時)

The type or namespace name 'PersistentBag' does not exist in the namespace 'NHibernate.Collection'

は、Visual Studioでの選択肢を提案は以下のとおりです。

  • AbstractPersistentCollection
  • ジェネリック(名前空間)
  • IPersistentCollection(インターフェース)
  • PersistentArrayHolder

第二及び第三のクラスはありません。 1番目と4番目にはCount()メソッドがありません。

この場合、どちらを使用する必要がありますか?

+0

リリースノートには何もありませんか?可視性は内部に変更することができます。 –

答えて

1

NHibernate 4にはPersistentBagはありません。PersistentGenericBag<T>のみです。

NHの内部型であり、キャストされる予定ではありません。

このコードが実際に見つかりましたかわかりません。それが自分のものなら、IListまたはICollectionCountにアクセスできます。どちらもバッグによって実装されています。

使用しているフレームワークのコードの場合、おそらく別のNHibernateバージョンを使用する必要があります。

+0

'IColleciton'を使用すると少なくとも以下のようにコンパイルされます:' sb.Append(propertyName [i] .ToLower()+ "=" + " (System.Collections.ICollection)state [i])。Count.ToString()+"アイテム ");'。他の問題が解決されたら、これをテストします。 –

+0

NHibernateを更新している場合は、以前使用していたバージョン以降のすべてのバージョンのリリースノートを参照する必要があります。ランタイムには、多くの場合、さらに多くの驚きがあります。 –

関連する問題