1

私は 100 の TableAdapter (DataSet xsd) のようなレガシー DAL を持っていますが、Oracle クライアント 12c で新しいサーバーを取得したためOracle.DataAccess.Client、古い deprecated から (ODP.NET)に切り替える必要がありましたSystem.Data.OracleClient

私が今持っている唯一の問題は、常にエラーが発生することです: ORA-01008:テーブル アダプターを呼び出すときに、すべての変数がバインドされていません。

TableAdapter ごとに設定BindByNameする必要があることを読みました。しかし、使用される唯一の場所がTableAdapter 自体のデザイナーにある場合、どうすればよいでしょうか?trueOracleCommandOracleCommand

私は100個ほど持っているので、各TableAdapterを拡張せずにこれを行う方法はありますか?

4

1 に答える 1

0

私がしたことは、各 TableAdapter を拡張し、OracleCommand コレクションSetBindByName()を強制する新しいメソッドを作成することでした。BindByName = true

そのようです...

public partial class V_CUSTOMER_GLOBALTableAdapter
{
    public void SetBindByName(bool value = true)
    {
        foreach (Oracle.DataAccess.Client.OracleCommand cmd in this.CommandCollection)
        {
            cmd.BindByName = value;
        }
    }
}

次に、TableAdapter のインスタンスを作成するときに、新しいSetBindByName()メソッドを呼び出しました。

V_CUSTOMER_GLOBALTableAdapter ta = new V_CUSTOMER_GLOBALTableAdapter();
ta.SetBindByName(true);
于 2015-08-30T00:19:43.573 に答える