私は最近、私が現在所有しているデータセットのコードセットを継承し、Subsonic 2.1.0を使用してデータアクセスを実行しました。SubSonic throw 'System.IndexOutOfRangeException' Visual Studioデバッグモードの場合
私はデバッグに行くコードセットは、私は、Visual Studio 2010の出力ウィンドウに取得することすべてが(ほとんどのためにすべてのオブジェクトのすべての列がロードされるようにしようとして)、次のされて、言った:
A first chance exception of type 'System.IndexOutOfRangeException' occurred in System.Data.dll
これはそうのように見えた、それはSubSonic.RecordBaseクラスに位置するサブソニック、中に爆破されたコードのブロックです:
/// <summary>
/// Loads the object with the current reader's values. Assumes the reader is already moved to
/// first position in recordset (aka has been "Read()")
/// </summary>
/// <param name="dataReader">The data reader.</param>
public virtual void Load(IDataReader dataReader)
{
foreach(TableSchema.TableColumn col in BaseSchema.Columns)
{
try
{
SetColumnValue(col.ColumnName, dataReader[col.ColumnName]);
}
catch(Exception)
{
// turning off the Exception for now
// to support partial loads
// throw new Exception("Unable to set column value for " + col.ColumnName + ": " + x.Message);
}
}
SetLoadState();
MarkClean();
}
そこに問題のある行は、次のとおりです。
SetColumnValue(col.ColumnName, dataReader[col.ColumnName]);
col.ColumnNameは、現時点ではdataReaderのものと一致しません。これは、古い/以前のdataReaderを使用してデータを取得しようとするようなものです。
私はまだSubsonicを新しく使っていて、過去にHibernateをORMに使用していただけなので、他の誰かがこの問題に遭遇したことを期待しています。
これは、古いマシンと新しく作成したばかりの両方で、Windows 7 Professional x64/Visual Studio 2010 ProfessionalをIDEとして実行している場合でも発生します。
私はフォーラム、Google、および他の多くのサイトを見てきましたが、まだこの問題に遭遇している他の人は見つけていません。
さらに詳しい情報が必要な場合は、私にお知らせください。私は投稿して嬉しいです!
ありがとうございます!
- ジャスティン
ありがとう!:)私は(亜音速のビルドプロバイダーを使用していない)SubCommanderを使用して、同様に再生成DALを試してみたが、そこにも無駄に。 : - /私はまだフォーラムや何を掘り下げているのか分かりませんが、SubSonicのソースコードを付けてステップスルーしようとしています(VSデバッガが一度動作することを決めた場合) – Justin